Go言語にはデフォルトでSQLやSQLライクなデータベースに接続するための インターフェースがデフォルトで用意されている。
http://golang.org/pkg/database/sql/
それに各DB用のドライバーを追加して、データベースに接続する
go-sql-driver/mysql のインストール
$ go get github.com/go-sql-driver/mysql
コード
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "root:@/my_database") if err != nil { panic(err.Error()) } defer db.Close() // 関数がリターンする直前に呼び出される rows, err := db.Query("SELECT * FROM users") // if err != nil { panic(err.Error()) } columns, err := rows.Columns() // カラム名を取得 if err != nil { panic(err.Error()) } values := make([]sql.RawBytes, len(columns)) // rows.Scan は引数に `[]interface{}`が必要. scanArgs := make([]interface{}, len(values)) for i := range values { scanArgs[i] = &values[i] } for rows.Next() { err = rows.Scan(scanArgs...) if err != nil { panic(err.Error()) } var value string for i, col := range values { // Here we can check if the value is nil (NULL value) if col == nil { value = "NULL" } else { value = string(col) } fmt.Println(columns[i], ": ", value) } fmt.Println("-----------------------------------") } }