Go言語のType Parameter
Background/Context
Abstract
Go言語にオプショナルな型パラメタを導入する。これは型宣言や関数宣言で用いることができる。
インタフェース型が型制約として用いられるときは、その型に代入可能な型のリストを含めることができる。 →Type List このproposalはGo1と完全に後方互換性がある。 Overview
func F[T any](p T) { ... }
type M[T any] []T
func F[T Constraint](p T) { ... }
Constraint = InterfaceType
事前宣言された識別子any はどんな型も許す型制約
Generic functionは型制約で許された演算しかできない
Generic functionやGeneric typeを使うときには型パラメータが必要
ただし型パラメータは型推論が効くときは省略できる
用語
Go言語におけるGenericsは、型パラメータを受け取る関数または型のことである