Go導入リンク
新しく案件でGoを使うことになったので使えそうなドキュメントをリンクしていく
随時更新予定
追記予定:
デプロイ周り
Unity連携
gRPC-web
Goダウンロード・インストール
公式サイト
ダウンロード
確認
$ go version
go version go1.17.6 darwin/amd64
エディタ
VSCodeやAtomなどにプラグイン入れる方法もあるが、すぐ始められて多機能なJET BRAINSのGoLandが一番いいと思う(有料だけどその価値はあった
チュートリアル
A Tour of Go
初学者は一通りこれを見ればいい、ポインタ、Goroutineだけ理解を深めるため他のサイトも見た。
メモ
以下、Go特有だったのでメモ
Defer
遅延処理 try-cath-finalyのfinaly的に使う
https://go-tour-jp.appspot.com/flowcontrol/12
Array
スライスはデータ格納していない、単に元の配列の部分列を指すだけ
https://go-tour-jp.appspot.com/moretypes/8
Pointer receivers
ポインタレシーバ、変数レシーバーの違い
変数レシーバーはコピーを渡す。
ポイントレシーバーはレシーバー自体を更新する。
レシーバー自身を更新することが多いため、変数レシーバよりもポインタレシーバの方が使うことが多い
https://go-tour-jp.appspot.com/methods/1
https://go-tour-jp.appspot.com/methods/4
使い所、構造体など
https://nishinatoshiharu.com/go-structure-pointermethod/
The empty interface
型が不明な場合にvar i interface{}
を使うと全ての型を入れることができる。(Any的な)a := x
と違いはintとかstringとか型が違を入れ替えて使うことができる。
https://go-tour-jp.appspot.com/methods/14
Stringers
fmt.Println(a, z) でString() を見にいく、これに関しては標準関数を理解していないとわからないので、他に定義済みが無いか確認しないとダメ
https://go-tour-jp.appspot.com/methods/17
Goroutine
個人サイトの方がわかりやすかった。
GoroutineはGoLangで書くメリットの大きな一つなので下記でポイントを押さえておく
https://qiita.com/taigamikami/items/fc798cdd6a4eaf9a7d5e
https://go-tour-jp.appspot.com/concurrency/1
標準ライブラリ
チュートリアルやって標準ライブラリ詳しくないとダメだと認識
テスト
標準ライブラリにテストがあり使い勝手がGOOD!!
実行はGoLandで走らすことができた
gRPC
公式サイトのQuick startがわかりやすかった
MacOS gRPCインストール
$ brew install protobuf
$ protoc --version
libprotoc 3.19.4
クライアントツール
毎回Go側でクライアントコードを書くのも大変なのでクライアントツールをインストール
使い方はサイトを参考
$ brew install --cask bloomrpc
Go Plugins
$ go get -u google.golang.org/grpc
$ go install -v google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install -v google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
$ export PATH="$PATH:$(go env GOPATH)/bin"
MongoDB
公式ドライバあり、ドキュメントもわかりやすい。
ダウンロード
$ go get go.mongodb.org/mongo-driver/mongo
$ go install -v go.mongodb.org/mongo-driver/mongo
$ go install -v go.mongodb.org/mongo-driver/mongo/options
$ go install -v go.mongodb.org/mongo-driver/mongo/readpref