Go の汎用関数
Go のインターフェイス型は、実装されたメソッドを必要とせずに任意の型を保持できるため、インターフェイス型がインターフェイスとして機能するかのような印象を与えます。汎用関数の形式。しかし、そうではありません。コンパイル時に型が不明な真のジェネリック関数は、バージョン 1.18 より前の Go ではサポートされていませんでした。
Go 1.18 ではジェネリックが導入され、ジェネリック関数の作成が可能になりました。ジェネリック関数は、func キーワードの後に角かっこで囲まれた型パラメータを使用して定義できます。型パラメータは、ジェネリック関数で受け入れられる型を指定します。例:
func Print[T any](s []T) { for _, v := range s { fmt.Print(v) } }
この例では、T は任意の型を表すことができる型パラメーターです。関数 Print は型 []T のスライスを受け入れ、スライスの要素を出力します。
汎用関数を使用するには、目的の型のスライスを引数として渡すことができます:
// Passing a list of strings Print([]string{"Hello, ", "world\n"}) // Passing a list of integers Print([]int{1, 2})
プログラムの出力は次のようになります:
Hello, world 12
汎用関数は、さまざまな型で動作できるコードを記述するための簡潔かつ安全な方法を提供します。型の安全性を犠牲にすることなく。
以上がジェネリックは Go で真のジェネリック関数をどのように有効にするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。