Go言語を公式ドキュメントを見ながら勉強してみた
開発環境 | Go言語 |
---|---|
mac 10.13.6 | go1.12.6 darwin/amd64 |
#インストール
https://golang.org/doc/installを参考にインストーラをダウンロード。
インストーラをポチポチっとしてインストールを実施。
デフォルトのインストール先は/usr/local/go
。
#環境設定
インストーラダウンロード時に表示されるhttps://golang.org/doc/install?download=go1.12.6.darwin-amd64.pkgに従ってPATHを設定。
export PATH=$PATH:/usr/local/go/bin
※今回は./bashrcに設定し、bash起動時に設定されるようにした。
#Hello World
同じくhttps://golang.org/doc/install?download=go1.12.6.darwin-amd64.pkgにHelloWorldでインストール環境確認をする手順が書かれていたので実施。
1.$HOME
ディレクトリにワークスペースとなるgo
ディレクトリを作成する。
※ワークスペースを指定するGOPATH
という環境変数が用意されているが、明示的に指定しない場合、デフォルトで$HOME/go
をワークスペースとみなす。
2.ワークスペースにsrc/hello
ディレクトリを作成する。
3.hello
ディレクトリにhello.go
ファイルを作成する。
4.hello.go
にHelloWorldを実装する。
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
#goroutine
GOの特徴の一つである並行処理(Concurrency)について、https://go-tour-jp.appspot.com/concurrency/1 を参考にゴルーチンの実装と挙動を確認した。
ゴルーチンはGoランタイム上で管理される軽量なスレッドみたいなイメージ。
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world") //キーワードgoでゴルーチンになる
say("hello")
}
同じアドレス空間で実行されるため、共有メモリへのアクセスは必ず同期する必要があります。
syncパッケージのWaitGroupを使ったり、チャネルを使ったりしますが、これらは次の機会に。
#まとめ
最初の一歩にhttps://go-tour-jp.appspot.com/ は最適。