初めての Go
初めてGo言語、初めてみた動機は、あるサーバにphpをインストールできないことでした。というか、単に root権限もらえなかった or お客様の環境なので無茶できなかったことが大きい。そんな訳で、これから色々と触ってみる。
インストール
https://golang.org/dl/ から最新のgoをダウンロードすればよい。
Windows の場合
「Windows に インストーラを使って GoLang を インストールするときの注意点」 を参照するとpathの話で少しハマルっぽいが、go1.8.3 版では特にハマル点はなかったので素直にインストール or 再起動でいい。
⇒ 実際は、「
Linux の場合
基本どこでもokです、path さえ通せばねw。
私は、下記のようにしました。
$ cd ~
$ wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
$ tar xvfz go1.8.3.linux-amd64.tar.gz
で、.bash_profile
に下記を追加する。
export GOROOT=$HOME/go
export GOPATH=$HOME/go/goroot
export PATH=$PATH:$HOME/go/bin
コマンドラインから go が使えればok。試しに hello してみます。
package main
import "fmt"
func main() {
fmt.Println("Hello hage!!")
}
実行してみる。
$ go run hello.go
Hello hage!!
MySQLに接続してみる
これ!これがやりたかった。go は、Java や php 、Perl などデータベースアクセスを行う場合、別途DBIやらパッケージをインストールする必要がありましたが、そこは後発の go 。すでにそういう一連の基底部分が充実しておりますw
とはいえ
MySQLのドライバは、インスコする必要があります。
それでもインスコは、超絶楽チンちん。
$ go get "github.com/go-sql-driver/mysql"
プログラム、プログラム
プログラム(楽しいので3回言ってみた)。ちょいといままでの php と全然勝手が違うのですが、そこは後から開発環境を整えるということにして、とりあえずMySQLにアクセスして結果を返すというサンプルを実行してみる。
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:password@tcp(host:3306)/dbname")
if err != nil {
panic(err.Error())
}
defer db.Close()
rows, err := db.Query("SELECT TABLE_NAME, PARTITION_NAME FROM INFORMATION_SCHEMA.PARTITIONS where PARTITION_NAME is not null")
defer rows.Close()
if err != nil {
panic(err.Error())
}
for rows.Next() {
var tableName string
var partitionName string
if err := rows.Scan(&tableName, &partitionName); err != nil {
panic(err.Error())
}
fmt.Println(tableName, partitionName)
}
}
おお。思ったとおりの結果になったw