どのプログラミング言語でもそうだが、使ってみると気に入る部分とそうでもない部分が出てくる。自分が以前Go言語を使ってみて気に入ったのは次の二つだ。
contextパッケージは下記のようなキャンセル処理を実装しやすくなる点を気に入っている。
For example, in HTTP servers, the
http.Request.Contextmethod returns a context associated with the request. That context is canceled if the HTTP client disconnects or cancels the HTTP request (possible in HTTP/2). Passing an HTTP request’s context toQueryWithTimeoutabove would cause the database query to stop early either if the overall HTTP request was canceled or if the query took more than five seconds.
Go言語の標準ライブラリとして提供されておりサードパーティのライブラリからも比較的サポートされているため利用可能な場面が多い点も大きなメリットだと思う。
テーブルドリブンテストは入力と期待値の組を表現しやすいので気に入っている。機能ではなくイディオムの類なので他の言語でも真似られなくはないが、Go言語のときが書きやすいように思う。しかもGoLandならテーブルドリブンテストを個別のテストケース単位で実行する機能まで提供されている。