在 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对于上面的代码。
catspeake
汪汪一只猫
相关分类