为了
Scan将值直接转换为
[]string,您必须创建一个
[]interface{}指向字符串切片中每个字符串的切片。在这里,您有一个适用的MySQL示例(只需更改
sql.Open-command以匹配您的设置):
package mainimport ( "fmt" _ "github.com/go-sql-driver/mysql" "database/sql")func main() { db, err := sql.Open("mysql", "user:pass@tcp(localhost:3306)/test?charset=utf8") defer db.Close() if err != nil { fmt.Println("Failed to connect", err) return } rows, err := db.Query(`SELECT 'one' col1, 'two' col2, 3 col3, NULL col4`) if err != nil { fmt.Println("Failed to run query", err) return } cols, err := rows.Columns() if err != nil { fmt.Println("Failed to get columns", err) return } // Result is your slice string. rawResult := make([][]byte, len(cols)) result := make([]string, len(cols)) dest := make([]interface{}, len(cols)) // A temporary interface{} slice for i, _ := range rawResult { dest[i] = &rawResult[i] // Put pointers to each string in the interface slice } for rows.Next() { err = rows.Scan(dest...) if err != nil { fmt.Println("Failed to scan row", err) return } for i, raw := range rawResult { if raw == nil { result[i] = "\N" } else { result[i] = string(raw) } } fmt.Printf("%#vn", result) }}

![将“ SELECT *”列读入[]字符串中 将“ SELECT *”列读入[]字符串中](http://www.mshxw.com/aiimages/31/471052.png)
