コンセプト
- とりあえず、MacでGoやってみたい人のために、できるだけ最短に
- 自分もまだ始めたばかり・・・
ダウンロード
- ここからGolangのpkgファイルをダウンロード
- pkgファイルを開いてGolangの環境をインストール
環境変数設定
~/.bash_profileに以下を追加
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=~/go-workspace
ワークスペースを作る。このディレクトリがソースファイルなどの置き場となる。場所は任意で良いが、GOPATH環境変数と合わせる必要がある。
$ mkdir ~/go-workspace
編集した.bash_profileを読んでおく
$ source ~/.bash_profile
お約束のHello, World実行
$ mkdir ~/go-workspace/src
$ mkdir ~/go-workspace/src/example.jp
$ mkdir ~/go-workspace/src/example.jp/sample1
- example.jpの部分は本来は運営するサイトドメイン名などを入れますが
- とりあえず今回はサンプルということでこれで
- sample1以下にhello.goというファイルを作る。
hello.go
package main
import "fmt"
func main() {
fmt.Print("「ザ・ワールド!」ッ!時よ止まれ!\n")
}
コンパイル&インストール
$ go install example.jp/sample1
~/go-workspace/bin/sample1 という実行ファイルができる。
実行
$ ~/go-workspace/bin/sample1
「ザ・ワールド!」ッ!時よ止まれ!
あれ?Hello, Worldじゃない。ま、いいか。
つまり、こういう流れ。
- ~go-workspace/src/ドメイン名/プロジェクト名/に、ソースファイルを置く
- go install ドメイン名/プロジェクト名/で、コンパイル
- ~go-workspace/bin/プロジェクト名(実行ファイル)が作られる
HTTPサーバーを起動する
先ほどのhello.goを修正
hello.go
package main
import (
"fmt"
"net/http"
)
func handler(writer http.ResponseWriter, request *http.Request) {
fmt.Fprintf(writer, "「ザ・ワールド!」ッ!時よ止まれ!\n")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
- さっきと同じくgo installして、sample1を実行
- ブラウザで http://localhost:8080/ へアクセス
- 「ザ・ワールド!」ッ!時よ止まれ!が表示される
めちゃ簡単です。
とはいえ、本格的な開発にはフレームワークがあったほうがいい。自分はメジャーどころのGinってフレームワーク使ってます。
Ginの説明は、ここではしません。なるはやなので。
IntelliJをインストール
- いちいちコマンドラインでやるのは面倒なのでIDEを使う
- IntelliJ + golang pluginが良いみたいです
- IntelliJを以下からダウンロードしてインストール
Golangプラグインをインストール
- Preferences > Pluginsを開く
- Browse Repositoriesボタンを押す
- Manage Repositoriesボタンを押す
- プラスボタンを押して以下のURLを追加(しなくてもいいかも)
インデント調整
プロジェクトを作る
- メニュー > File > New > Project
- Goを選択してNext
- ProjectのSDKを選択してNext。おそらくGo 1.6など一択
- プロジェクトの情報を入力してFinish
- Project Name: sample2
- Project Location: ~/go-workspace/src/ドメイン名/sample2
- ここ重要。$GOPATH/src/ドメイン名/に配置しておくとIntelliJからの実行がすんなりいきます
- その他、サーバーへデプロイするときなども含めて、$GOPATH/src/ドメイン名/パッケージ名/の下にソースファイルを置くのが無難です。それ以外でやるとトラブルの元。
- プロジェクトが開く
サンプルコード
- プロジェクトツリーのルートを選択
- メニュー > New > File > Go File
- ダイアログにhello.goと入力してOK
- hello.goの内容は、今度こそHello, Worldにしてみる。
hello.go
package main
import (
"fmt"
"net/http"
)
func handler(writer http.ResponseWriter, request *http.Request) {
fmt.Fprintf(writer, "Hello, World.\n")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
実行
- メニュー > Run > Edit Configurations
- +ボタンを押してGo Applicationを選択
- 以下のように入力してOKを押す
- RunKind: File
- File: hello.goへの絶対パス
- Working Directory: hello.goがあるフォルダ。つまりパッケージフォルダ。
これで動く準備が整いました。
ブレークポイントを貼ってデバッグ実行すれば、きちんとそこで止まります。
これでサクサクコード書いてトライ&エラーできるね\(^o^)/
あと、やっぱりサーバーサイドも静的型付け言語がいい!