我尝试使用 database/sql 将数据库行查询为 Go 类型,我的代码片段如下:
type User struct {
user_id int64
user_name string
user_mobile string
password string
email interface{}
nickname string
level byte
locked bool
create_time string
comment string // convert <nil> to *string error
}
func TestQueryUser(t *testing.T) {
db := QueryUser(driverName, dataSourceName)
stmtResults, err := db.Prepare(queryAll)
defer stmtResults.Close()
var r *User = new(User)
arr := []interface{}{
&r.user_id, &r.user_name, &r.user_mobile, &r.password, &r.email,
&r.nickname, &r.level, &r.locked, &r.create_time, &r.comment,
}
err = stmtResults.QueryRow(username).Scan(arr...)
if err != nil {
t.Error(err.Error())
}
fmt.Println(r.email)
}
MySQL:

如您所见,某些字段具有NULL值,因此我必须将interface{}类型设置为 Go 的 User 结构,然后将其转换NULL为nil.
--- FAIL: TestQueryUser (0.00s)
user_test.go:48: sql: Scan error on column index 9: unsupported Scan, storing driver.Value type <nil> into type *string
有人有更好的方法吗? 或者我必须更改 MySQL 字段并设置其 DEFAULT ' '
蓝山帝景
泛舟湖上清波郎朗
随时随地看视频慕课网APP
相关分类