いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-131 (Go 1.16 リリースで気になったところメモ)

概要

Go 1.16 のリリースノート見て、気になったところを自分用にメモメモ。

golang.org

Go 1.16 のリリース自体については前回の記事を参照ください。

devlights.hatenablog.com

  • 1.15から6ヶ月後にリリース
  • 言語の変更なし
  • Mac上の64ビット ARMアーキテクチャをサポート
  • モジュールモードがデフォルトでオンになった
    • 1.16から GO111MODULE="on"
    • 1.15まではGO111MODULE="auto"
  • go buildgo testgo.mod を書き換えないようになった
  • go install が version suffix を受け付けるようになった。指定なしの場合は @latest 扱い
    • e.g. go install example.com/cmd@v1.0.0
  • 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 関数が追加

参考情報

devlights.hatenablog.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com