golangの環境を整えてmysqlに接続する
丹内です。goからmysqlに接続するHello Worldをやってみました。
環境構築
Mac OS X 10.11.15を前提にします。まずはgoコマンドを使えるようにします。あわせてGOPATHの設定をします。
$ brew install go $ go version go version go1.6.2 darwin/amd64 $ echo echo "export GOPATH=~/.go" >> ~/.zshrc $ exec $SHELL -l $ mkdir .go; cd .go
次に、atomからの開発環境を整えます。こちらのブログを参考にオススメパッケージを入れます。
$ go get -v github.com/alecthomas/gometalinter $ bin/gometalinter --install --update $ go get -v golang.org/x/tools/cmd/gorename $ go get -v github.com/nsf/gocode $ go get -v github.com/rogpeppe/godef $ go get -v golang.org/x/tools/cmd/oracle
そしてatomのプラグインも入れます。
$ apm install autocomplete-plus go-plus
サンプルデータ
mysqlで以下のようなデータを入れておきます。
$ mysql -uroot mysql> create database gosample; mysql> use gosample; mysql> desc users; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | mediumint(9) | NO | PRI | NULL | auto_increment | | name | char(10) | NO | | NULL | | +-------+--------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) mysql> insert into users ( name ) values ( 'tannai' ); Query OK, 1 row affected (0.01 sec) mysql> select * from users; +----+--------+ | id | name | +----+--------+ | 1 | tannai | +----+--------+ 1 row in set (0.00 sec)
コーディング
mysqlのデータをSELECTして出力するプログラムを書きます。
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "root@/gosample") if err != nil { panic(err.Error()) } defer db.Close() rows, err := db.Query("SELECT * FROM users") defer rows.Close() if err != nil { panic(err.Error()) } for rows.Next() { var id int var name string if err := rows.Scan(&id, &name); err != nil { panic(err.Error()) } fmt.Println(id, name) } }
実行してみます。
$ go run main.go 1 tannai
コンパイルして実行してみます。
$ ls main.go $ go build main.go $ ls main main.go $ ./main 1 tannai