注目★★★★★Hacker News
Go 1.28 へ汎用コレクション型を標準ライブラリに追加、Map/Set/Heap の統一 API 提案
30秒で把握
- 1Go 作業部会が hash/ordered/heap の 5 つコレクション型と maphash.Hasher を提案、Go 1.28 での標準化を目指す
- 2F 限定制約インターフェースで Map/Set の抽象 API を統一、実装間の互換性と一貫性を確保
- 3map[T]bool/struct{} や slice ソートの代替として活用可能、標準 set.Set[T] が汎用データ構造の慣例に
要約
Go コレクション作業部会が、Go 1.28 向けに container/ パッケージに複数の汎用コレクション型を標準ライブラリに追加する提案を公開した。hash.Map[K,V]・hash.Set[T]・set.Set[T]・ordered.Map[K,V]・heap/v2.Heap のほか、カスタムハッシュ関数用に hash/maphash.Hasher も組み込む。これらは Go 1.18 のジェネリクスと Go 1.23 のイテレータ導入により、組み込み型と同等の使いやすさを実現できるようになった。Map/Set の共通 API には F 限定ポリモーフィズムの抽象制約インターフェースを導入し、異なる実装間でも一貫性を保つ設計となっている。現在は slice/map に頼るか map[T]bool で代用するしかないため、標準化により開発効率向上が期待される。
あなたへの影響
既存コードで map[T]bool や map[T]struct{} を集合代わりに使ってきたプロジェクトは、Go 1.28 リリース後に set.Set[T] への段階的な移行を検討する価値がある。
推奨:また ordered.Map が範囲検索などで現在の「map を作ってソート」パターンより効率的になる場面も増えるため、パフォーマンス チューニングの選択肢が広がる。