从 sql 数据库 Golang 获取 blob

Ang*_*ger 2 go

 import (
       "database/sql"
       "encoding/json"
       "fmt"

       _ "github.com/go-sql-driver/mysql"
   ) 
   type User struct {
       Name string  `json:name`
       Picture []uint8 `json:picture`
    }
    func main(){
       //straight to the query
       rows, err := 'SELECT name, picture FROM ms_users' // picture is longblob type in database
       checkErr(err)

       var usr User
       for rows.Next(){
          err = rows.Scan(&usr.Name, &usr.Picture)
          checkErr(err)
       }
       jsn, err := json.Marshal(usr)
       fmt.Printf("%v, "string(jsn))
    }
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我只得到 name 值但图片是空的。如何将 blob 值从数据库存储到 struct ?任何答案将不胜感激!谢谢你!

Man*_*esh 5

我对 GO 比较陌生,在搜索类似问题的解决方案时遇到了这个问题,我找到了解决方案。

当您从数据库中获取 BLOB 数据时,您将其作为 []byte 类型获取,您的结构可能如下所示

type User struct {
   Name string  `json:name`
   Picture []byte`json:picture`
}
Run Code Online (Sandbox Code Playgroud)

我想您可以稍后根据需要处理字节数组。就我而言,我需要一个 JSON 对象,因此我将其解组为类型 interface{} 变量。