Goを触っていると、ときどき「これは現代のC言語だな」と思います。もちろん同じものではありません。GCがありますし、標準ライブラリも厚いです。それでも、余計な飾りより先に「まず動くものを置く」という態度が前に出てきます。私はその感じがかなり好きです。
フレームワークの流儀を覚える時間より、入出力やファイルやプロセスをそのまま触っている時間のほうが楽しいです。AIにボイラープレートを書かせる場面が増えた今は、なおさらそう思います。細かい配線は機械に寄せてもよくて、人間はどこで分岐させるか、どこで止めるかを考えるほうが面白いです。
抽象化が薄い
Goのよさは、機能の多さより距離感にあります。文字列を読む、HTTPを叩く、JSONを流す、その一歩一歩が遠くありません。何かをするときに、巨大な前提知識を毎回持ち込まなくていいです。Cほど素手ではないのに、見えなくなる部分も少ないです。
そのせいか、小さなCLIを書いているときの気分が軽いです。ひとつのファイルから始めても気まずくありません。依存関係を増やさなくても、標準ライブラリだけで最後まで行ける場面がかなり多いです。正直、ここがいちばん効きます。
Windowsでも話が変わらない
私のメインPCはWindowsです。だから、Unix系の道具だけが気持ちよく使える言語には、少し身構えます。Goはそこが比較的フラットです。Windowsだから急に肩身が狭くなる感じが薄いです。クロスコンパイルも特別な儀式に見えません。
たとえば公式のGoイメージで環境変数だけ切り替えると、Windows向けのターゲットがそのまま見えます。
docker run --rm -e GOOS=windows -e GOARCH=amd64 golang:1.24 go env GOOS GOARCH CGO_ENABLED
windows
amd64
0
実際、同じコンテナで go tool dist list を見ると、windows/amd64 も windows/arm64 も最初から並んでいます。こういう素朴さは大事です。どこでも動くと言いながら、実際には前提条件だらけの道具は珍しくありません。Goはその点で話が早いです。
Cに似ていると言うと語弊はありますが、私が好きなのは性能表より姿勢です。薄く、素直で、OSやプロセスに近いところまで降りていけます。それでいて、今のPCで日常的に使うには十分に楽です。現代のC言語という言い方は、たぶんこの手触りに対して使っています。