查询每行返回一个字段。该代码正在扫描三个。也许您想要这样的东西:
err := db.QueryRow("SELECt data->>'id', data->>'type', data->>'title' FROM message WHERe data->>'id'=$1", id).Scan(m.Id, m.Type, m.Title)另外,将指针传递给值:
err := db.QueryRow("SELECt data->>'id', data->>'type', data->>'title' FROM message WHERe data->>'id'=$1", id).Scan(&m.Id, &m.Type, &m.Title)另一个选择是将数据作为单个字段获取,并使用encoding / json包对结果进行解码。
var p []byteerr := db.QueryRow("SELECt data FROM message WHERe data->>'id'=$1", id).Scan(&p)if err != nil { // handle error}var m Messageerr := json.Unmarshal(p, &m)if err != nil { // handle error}


