Go の汎用関数: 総合ガイド
Go を探索していると、空のインターフェイスの概念に遭遇するかもしれません。これは、追加のメソッドを必要とせず、あらゆる型を保持できる強力なツールです。
次の例を考えてみましょう:
func describe(i interface{}) { fmt.Printf("Type: %T | Value: %v\n", i, i) }
説明するためにさまざまな型を渡すと、型と値が出力されます。
"Type: int | Value: 5" // for i := 5 "Type: string | Value: test" // for i := "test"
では、これは Go の汎用関数の実装方法なのでしょうか?完全ではありません。 Go 1.18 以降では、真のジェネリック関数を作成できるようになりました。以下に例を示します。
package main import ( "fmt" ) // T can be any type func Print[T any](s []T) { for _, v := range s { fmt.Print(v) } } func main() { // Passing list of string works Print([]string{"Hello, ", "world\n"}) // You can pass a list of int to the same function as well Print([]int{1, 2}) }
出力:
Hello, world 12
この汎用関数 Print は、あらゆるタイプのスライスを処理でき、汎用性が高く、タイプセーフな汎用プログラミング アプローチを提供します。
以上がGo の空のインターフェイスまたは Go 1.18 ジェネリックはジェネリック関数の真の実装ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。