Go 1.16 がリリースされた
Go 1.16 がリリースされた。
毎度のごとく変更は多岐にわたるが,個人的に気になった部分を挙げておく。
- macOS の 64bit ARM アーキテクチャをサポート。
darwin/arm64
で指定可能。またこれにより iOS ポートがios/arm64
またはios/amd64
にリネームされた(後者は iOS シミュレータ用) GO111MODULE
環境変数の既定値がon
になった。以前の状態に戻すにはauto
を指定することgo install
コマンドの引数がバージョン番号サフィックスを受け入れるようになった- 例:
go install example.com/cmd@v1.0.0
- 例:
go build
やgo test
などのビルド系コマンド実行時に go.modや go.sum
ファイルの変更を行わなくなったgo.mod
によるモジュール設定でretract
ディレクティブが追加された- ラベルのない for ループ,メソッド値,型スイッチのある関数をインライン化できるようになった
embed
パッケージおよび//go:embed
ディレクティブの追加io/fs
パッケージの追加によりファイルシステムの汎化が容易になったio/ioutil
パッケージの非推奨化crypto/dsa
パッケージの非推奨化。これに伴いcrypto/x509
で DSA による電子署名検証機能がドロップされた(電子署名生成は以前からないらしい)os/signal
.NotifyContext()
関数の追加。これにより SIGNAL 到着時にcontext
.Context
によるキャンセルを容易に実装できるstrconv
のパフォーマンス改善(最大で2倍らしい)
例によって Ubuntu の APT で管理している Go コンパイラは古いので,ダウンロードページからバイナリ(go1.16.linux-amd64.tar.gz
)を取ってきて手動でインストールすることを強く推奨する。
以下は手動での作業例。
$ cd /usr/local/src
$ sudo curl -L "https://golang.org/dl/go1.16.linux-amd64.tar.gz" -O
$ cd ..
$ sudo unlink go # 以前の Go が入っている場合
$ sudo tar xvf src/go1.16.linux-amd64.tar.gz
$ sudo mv go go1.16
$ sudo ln -s go1.16 go
$ go version # /usr/local/go/bin にパスが通っている場合
go version go1.16 linux/amd64
アップデートは計画的に。
ブックマーク
参考図書
- プログラミング言語Go
- アラン・ドノバン (著), ブライアン・カーニハン (著), 柴田芳樹 (著)
- 丸善出版 2016-06-20 (Release 2021-07-13)
- Kindle版
- B099928SJD (ASIN)
- 評価
Kindle 版出た! 一部内容が古びてしまったが,この本は Go 言語の教科書と言ってもいいだろう。感想はこちら。