亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何正確掃描pq數組?

如何正確掃描pq數組?

Go
明月笑刀無情 2023-07-10 10:58:59
在 PostgreSQL 數據庫中我有一個表:| ORGANIZATION_ID | FACTOR_IDS   | CALCULATION_VALUES  ||-----------------|--------------|---------------------|| 1               | {1,2,3,4,5}  | {0,66.66,50,100,80} || 2               | NULL         | NULL                || 1               | {6,7,8,9,10} | {0,77.77,60,110,90} |在 Go 中,我對該表進行查詢,然后嘗試使用該Scan方法。不幸的是我收到一個錯誤:Trace: runtime error: invalid memory address or nil pointer dereference我的代碼:type Entry struct {    OrganizationID int    FactorIDS pq.Int64Array    CalculationValues pq.Float64Array}rows, err = database.DBGORM.Raw(`SELECT * FROM ANALYTICS`, ID).Rows()if err != nil {    utils.Logger().Println(err)    return}defer rows.Close()for rows.Next() {    var entry *Entry    if err = rows.Scan(&entry.OrganizationID, &entry.FactorIDS, &entry.CalculationValues); err != nil {        utils.Logger().Println(err) // <- RAISE ERROR        return    }    if entry.FactorIDS != nil {        for index, value := range factorID {            // some code here        }    }}我該如何解決這個問題?另外,如果我將類型從 更改pq.Int64Array為*pq.Int64ArrayGo 編譯器,則會出現錯誤:Cannot range over data *pq.Int64Array對于上面的代碼。
查看完整描述

2 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

nil 指針解除引用已開啟entry。entry通過將指針更改為值來修復:


for rows.Next() {

    var entry Entry  // <--- change on this line

    ... remaining code as in question

}


查看完整回答
反對 回復 2023-07-10
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

由于這些 &entry.OrganizationID、&entry.FactorIDS、&entry.CalculationValues,它令人恐慌。由于條目是指針類型,并且您尚未為其初始化內存。如果你想要指針類型的結構,你可以像這樣初始化它:


for rows.Next() {

    entry:=new(Entry)


    if err = rows.Scan(&entry.OrganizationID, &entry.FactorIDS, &entry.CalculationValues); err != nil {

        utils.Logger().Println(err) // <- RAISE ERROR

        return

    }


    if entry.FactorIDS != nil {

        for index, value := range factorID {

            // some code here

        }

    }

}


查看完整回答
反對 回復 2023-07-10
  • 2 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號