---
source_url: https://victoriametrics.com/blog/go-1-27/index.html
source_title: "Go 1.27 interactive tour"
source_site: "VictoriaMetrics"
source_published_at: 2026-07-31T00:00:00Z
hero_image: https://victoriametrics.com/blog/go-1-27/preview.webp
tags: go,programming-language,standard-library
generated_at: 2026-08-02T04:01:13.971Z
model: claude-haiku-4-5
---
# Go 1.27 の主要な新機能と最適化を解説

TL;DR: Go 1.27 は 2026 年 7 月 31 日にリリース予定で、ジェネリックメソッド、構造体リテラルフィールドセレクタ、メモリ割り当て 30% の最適化、ポスト量子署名 crypto/mldsa、UUID パッケージ、JSON v2 の標準化など主要な機能追加と 1600 のコミット分の改善を含む。

Go 1.27 は大規模なアップデートをもたらす。ジェネリックメソッドは受け取り側の型と独立した独自の型パラメータを宣言でき、一般化された関数型推論は汎用関数が一致する関数型として用いられるコンテキスト（変換やコンポジットリテラル）で適用される。構造体リテラルフィールドセレクタは埋め込み構造体の昇格フィールドを埋め込み型を指定せずに直接利用可能にする。ただしジェネリックメソッドはインターフェース内で宣言したり、インターフェース満足に使用することはできない。

## メモリ割り当ての大幅な最適化

コンパイラは 80 バイト未満の割り当てに対してサイズ専用メモリ割り当てルーチンへの呼び出しを生成するようになり、小さな割り当てのコスト削減は最大 30% に達する見込みである。この改善はバイナリサイズとしては 60 KB のトレードオフを伴うが、実際のメモリ割り当てが多いプログラムでは全体的に 1% 程度の利得が期待される。

## ポスト量子署名とセキュリティ強化

新たに追加された crypto/mldsa パッケージは FIPS 204 で規定されるポスト量子デジタル署名方式 ML-DSA を実装する。MLDSA44、MLDSA65、MLDSA87 の 3 つのパラメータセットを備えており、MLDSA65 のシグネチャサイズは 3309 バイトである。並行して crypto/x509 は Windows と macOS 上で SSL_CERT_FILE と SSL_CERT_DIR を尊重するようになった。

## 標準ライブラリの追加と機能卒業

Go 1.27 は待望の UUID パッケージを標準ライブラリに統合し、RFC 9562 に従って UUID の生成とパースを暗号学的に安全な乱数ソースで実行する。encoding/json/v2 は GOEXPERIMENT=jsonv2 ビルドフラグなしで利用可能となり、従来の encoding/json（v1）は内部で v2 実装に支える一方、v2 はデフォルトではマップキーをソートしない。go.mod が Go 1.27 以降を設定するモジュールについては、トレースバックは runtime/pprof ゴルーチンラベルを含むようになる。Go 1.26 で実験的に導入されたゴルーチンリークディテクタは Go 1.27 で通常のプロファイルに昇格する。

## その他の主要な改善

strings.CutLast と bytes.CutLast はセパレータの最後の出現周辺で分割する。hash/maphash パッケージは Hasher[T] インターフェースをゲインし、math/big.Int.Divide は明示的なラウンドモードで商と剰余を計算する。math/rand/v2 は (*Rand).N メソッドを追加し、カスタム Rand ソースから任意の整数型または duration 型の制限付き乱数を描画できる。testing/synctest は Sleep ヘルパーを追加し、合成クロックを進めてゴルーチンが落ち着くまで待機する。httptest.NewTestServer は実際の TCP リスナなしにメモリ内フェイクネットワークサーバを生成する。time チャネルは Go 1.23 のタイマー再設計以降、常にアンバッファ化された。http.Response.Body は HTTP/1 接続再利用を可能にするため Close で自動的にドレインされる。HTTP/2 サーバは RFC 9218 に従いクライアントの優先度を尊重する。Unicode バージョンは 15 から 17 へアップグレードされ、1600 のコミットが Go 1.26 と Go 1.27 の間にマージされた。

## 開発者ツールと言語ツールチェーン

go test は デフォルトで stdversion vet チェックを実行する。go doc は go doc pkg@version 構文で特定のモジュールバージョンの documentation をサポートし、-ex フラグでパッケージの実行可能な examples をリスト表示する。go fix は atomictypes、embedlit、slicesbackward、unsafefuncs の新しい modernizers アナライザーをゲインする。go mod tidy は go 1.27 以降のモジュール向け require ブロックを整理する。go tool trace -http=:6060 は localhost にバインドする。go コマンドは Bazaar（bzr）バージョン管理システムのサポートを廃止した。Response ファイル（@file）は compile、link、asm、cgo、cover、pack ツールでサポートされるようになった。

## コンパイラと実行時の最適化

HTTP/2 は h2_bundle.go の単一ファイル（12226 行）から実際のパッケージ net/http/internal/http2 へ移行した。Go 1.27 は net/http に unexported pluggable HTTP/3 フックを追加し、将来の QUIC サポートに備える。既知ビット dataflow パス、ループ不変コード移動、switch ステートメント lookup テーブルコンパイレーションの 3 つの新しいコンパイラ最適化が導入される。Swiss Table map 実装はハッシュ関数を simd/archsimd intrinsic の上に再実装した。型記述子と itab は明示的アライメント付き dedicated .go.type セクションに移行した。reflect.typelinks はオフセットではなく型を返すようになり、新しい実験的な map メモリレイアウト GOEXPERIMENT=mapsplitgroup はインターリーブ（KVKVKVKV）から split キー/値配列（KKKKVVVV）へレイアウトを変更する。os.Root ReadDir と Readdir は root containment boundary をエスケープできる可能性がある。

## 筆者の見立て

- JSON v2 との互換性問題が発生した場合、GOEXPERIMENT=nojsonv2 で元の v1 実装を復元できる可能性を示唆している
- ポータブル SIMD パッケージは実験的であるが標準ライブラリがすでに利用者となっていると解釈している
- reflect.typelinks が型を返すよう変更されたことは、一部のライブラリが //go:linkname 経由でアクセスしている可能性があるため注視すべきだと論じている
- //go:linkname に依存している場合は Go 1.27 は早期テストの適切なリリースであると予想している

*この記事は元記事の事実のみに基づいて自動生成されました。*

## 出典

**VictoriaMetrics**  
Go 1.27 interactive tour  
https://victoriametrics.com/blog/go-1-27/index.html
