goを再び触ることになりそうで以前やったものを再履修しております。
https://skill-up-engineering.com/category/go言語/
まとまってないですが、色々とメモを。
GOPATH
ライブラリなどの読み込み場所になります。
ディフォルトだと~/goになっています。
dockerを使った場合などはアプリのルートディレクトリにlibsなどとして配置するのがいいかと思いますので。アプリと同じパスにした方が便利かと。(共有場所におかないとコンテナを破棄するたびに初期化されてしまうので。)
go mod
goのライブラリ管理ツールになります。1.11から使えるようです。
PHPでいうところのcomposer.jsonのような役割かと思います。
1 2 3 4 5 6 7 8 9 10 11 12 |
#初期化 go mod init プロジェクト名(golib) #依存ライブラリのインストール & ビルド #ライブラリのインストールは階層ごとに実施 go build #不要ライブラリの削除 go mod tidy #通常通りのライブラリインストール go get ライブラリURL(github.com/thoas/go-funk) |
Go言語の依存モジュール管理ツール Modules の使い方
ちなみにインストールしたライブラリの記録はgo.sumというファイルに記録されます。
テストコード
これがあるとないとで開発効率が全然変わってくるので、以前やった時にもう少し早く気づくべきでした。
メインのコードと同階層に作ります。
sample.goが実際のコードでこのテストコードは、
sample_test.goになります。
sample.go(テスト対象コード)
1 2 3 4 5 |
package sample func hoge() { return "aaaa" } |
sample_test.go(テストコード)
1 2 3 4 5 6 7 8 9 |
package sample import ( "testing" ) func TestExample(t *testing.T) { hoge() } |
あとはsample.goの階層までいき、
go test
で実行されます。
任意のコードのみ実行させたい場合は下記のようになります。
1 |
go test -run Dummy |
defer
return後に実行される関数を記述しておく仕組みです。
主に、dbのcloseなどでかかれ、他の言語でいうとfinallyに近い仕組みです。
ライブラリ関連
ロギング
https://github.com/go-easylog/el
レベル分けができるのと、使い方が非常に簡単なのでおすすめです。
ORマッパー
新しく作るならORマッパーですね。ドキュメントも揃っていてわかりやすいかと思います。
SQLドライバー
https://github.com/go-sql-driver/mysql
SQLを直に入力して、操作できます。簡単で使いやすいです。
サンプルコード