この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
丹内です。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