Exec 方法不返回行,它返回 driver.Result 和 error。
func (stmt *stmt) Exec(args []driver.Value) (driver.Result, error)
^^^^^^^^^^^^^
并且,driver.Result 类型具有以下定义(已删除 cmets):
type Result interface {
LastInsertId() (int64, error)
RowsAffected() (int64, error)
}
您正在寻找的是返回 driver.Rows 的 Query 方法:
func (stmt *stmt) Query(args []driver.Value) (driver.Rows, error)
^^^^^^^^^^^
然后您可以遍历行以生成所需的数组。
README.md 中列出了一个示例(在此处复制):
rows, err := connect.Query("SELECT country_code, os_id, browser_id, categories, action_day, action_time FROM example")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var (
country string
os, browser uint8
categories []int16
actionDay, actionTime time.Time
)
if err := rows.Scan(&country, &os, &browser, &categories, &actionDay, &actionTime); err != nil {
log.Fatal(err)
}
log.Printf("country: %s, os: %d, browser: %d, categories: %v, action_day: %s, action_time: %s", country, os, browser, categories, actionDay, actionTime)
}
希望有帮助!