概要
Go 1.16 のリリースノート見て、気になったところを自分用にメモメモ。
Go 1.16 のリリース自体については前回の記事を参照ください。
- 1.15から6ヶ月後にリリース
- 言語の変更なし
- Mac上の64ビット ARMアーキテクチャをサポート
- モジュールモードがデフォルトでオンになった
- 1.16から GO111MODULE="on"
- 1.15まではGO111MODULE="auto"
go buildとgo testがgo.modを書き換えないようになったgo installが version suffix を受け付けるようになった。指定なしの場合は@latest扱い- e.g.
go install example.com/cmd@v1.0.0
- e.g.
go testにてos.Exit(0)をテスト失敗として検出するようになった- ビルド時の リンク 作業にかかる時間が1.15よりも20-25%ほど速くなった
- ビルド時の メモリ消費量が1.15よりも5-15%ほど少なくなった
embedパッケージが新規追加runtime/metricsパッケージが新規追加io/fsパッケージが新規追加io/ioutilパッケージが非推奨となった。元々io/ioutilsに存在していた各関数は io と os パッケージに移動- 非推奨扱いではあるが、
io/ioutilパッケージはまだ存在する。
- 非推奨扱いではあるが、
flagパッケージにFunc関数が追加logパッケージにデフォルトロガーを取得できるDefault関数が追加- 既に閉じているネットワークI/O、または、I/Oが完了する前に閉じられてしまったネットワークI/Oにアクセスした場合に
net.ErrClosedが返るようになった- 1.16より前だと、このケースを確実に検出する唯一の方法は、Error メソッドが返す文字列を "use of closed network connection" と一致させることだった。
- osパッケージの
Process.Signalメソッドで、既にプロセスが終了している場合にos.ErrProcessDoneが返るようになった。 os/signalパッケージにNotifyContext関数が追加。context.Contextを渡せるようになった。path/filepathパッケージにWalkDir関数が追加
参考情報
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場