概要
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
関数が追加
参考情報
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場