go

GoLand で goenv のSDKをつかう

go

GoLand 上で指定した Go のバージョンでプログラムを動かしたい。 複数バージョンの Go を管理する goenv があるのでこれを使ったが、GoLand のエディタ上では自動的には認識してくれない。そこで goenv で指定したバージョンを GoLand にも認識させる作業が…

Go のエラー処理を整理

go

Go のエラー処理はけっこう独特。なにをもってエラーかというと、次の interface を満たすだけ。 type error interface { Error() string } めっちゃシンプル。でも、これだけで本当に実際にエラー処理やっていけるのか。 特定のエラーを判別する エラーによ…

Go のミドルウェア Adapter パターンに美しさを感じた話

medium.com 間に処理を差し込みたいとき、直接中身をいじるのではなく handler を引数にとって、新しい handler で返す関数(decorator pattern?) なのが良いね。 そして、Go の http.Handler の仕組みってすげーってなった。 handler は本来は Handle() を…

goroutine の数はどれくらいが良いのか

Go の主要な機能である Goroutine 好きなだけ並列に実行できるけど、増やしすぎるとかえって遅くなったりするのかどうなのか、気になった。 CPU処理か、IO処理かで変わる CPU処理であれば、CPU数以上上げても切り替わりが激しくなるだけで性能は上がらない I…