ジェネリクスは、関数や構造体に型パラメーターを追加することで、より柔軟なコードの記述を可能する。
しかし、ジェネリクスの概念はメソッドの記法とは異なる点がいくつかある。
ジェネリクスの基本
- ジェネリクスを使うと、関数や構造体に追加の型パラメーターを設定できる
- 型パラメーターは関数名や構造体名の後ろに配置され、角括弧
[]
で囲む - さまざまな型に対して同じ関数や構造体を使い回せるようになる。
構造体でジェネリクス
package main
import "fmt"
// ジェネリックな構造体
type Pair[T1, T2 any] struct {
First T1
Second T2
}
func main() {
// ジェネリックな構造体の使用例
pair1 := Pair{1, "one"}
pair2 := Pair{"two", 2}
fmt.Printf("Pair 1: First=%v, Second=%v\n", pair1.First, pair1.Second)
fmt.Printf("Pair 2: First=%v, Second=%v\n", pair2.First, pair2.Second)
}
メソッドにジェネリクス
package main
import (
"fmt"
)
// ジェネリックな型Tに対するメソッド
func Print[T any](value T) {
fmt.Printf("%v\n", value)
}
func main() {
// ジェネリックなメソッドの使用例
Print(42)
Print("Hello, World!")
Print(3.14)
}
参考