ジェネリックは Go 関数の型関連のバグを解決し、さまざまな型のデータを受け入れて操作する汎用関数の作成を可能にします。型変数を使用すると、ジェネリック関数は渡された任意の型に適応できるため、型の競合エラーが回避され、コードが簡素化され、柔軟性が向上します。
Go ジェネリックは関数の型関連エラーを解決するために使用されます
ジェネリックは Go 1.18 で導入されました。コードの再利用性と柔軟性を強化する機能。ジェネリックを使用すると、さまざまな種類のデータを操作できる汎用関数を作成できます。これにより、重複したコードの記述や型関連のエラーが排除されます。
型関連のエラー
関数がジェネリックスなしで特定の型を予期しており、関数に渡された引数の型が異なる場合に発生します。型関連のエラーです。例:
func AddInts(a, b int) int { return a + b } func main() { fmt.Println(AddInts(1, 2.5)) // 编译错误:不合法的类型参数 }
AddInts
関数は 2 つの整数パラメータを必要としますが、2.5
は浮動小数点数であるため、上記のコードはコンパイル エラーを引き起こします。
ジェネリック ソリューション
ジェネリックを使用すると、任意の型を受け入れるユニバーサル関数を作成できます。ジェネリック関数は、渡された任意の型に適応できる型変数を使用します。ジェネリックスを使用するように AddInts
関数を書き直してみましょう:
func Add[T numeric](a, b T) T { return a + b }
この関数は、numeric
型 (を含む) に制限される型変数 T
を使用します。整数、浮動小数点数、複素数などの数値型)。 T
はジェネリック型であるため、numeric
インターフェイスを実装する任意の型を渡すことができます。
fmt.Println(AddInts(1, 2)) // 3 fmt.Println(AddInts(1.5, 2.5)) // 4.0
実践的なケース
ジェネリックの一般的な使用例は、異なる型の値を比較できる比較関数を作成することです。たとえば、次の関数はジェネリックスを使用して 2 つの値が等しいかどうかを比較します:
func Equal[T comparable](a, b T) bool { return a == b }
これで、Equal
関数を使用して、比較可能な型の 2 つの値を比較できるようになります:
fmt.Println(Equal(1, 2)) // false fmt.Println(Equal("hello", "world")) // false
結論
Go のジェネリックスは、関数内の型関連のエラーを解決し、コードの再利用性と柔軟性を向上させる強力なツールです。ジェネリックスを使用すると、さまざまな型のデータを操作できる汎用関数を作成して、コードを簡素化し、型関連のエラーを防ぐことができます。
以上がGolang ジェネリックは関数内の型関連のエラーをどのように解決しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。