こんにちは、今回はGolangのジェネリック構造体に焦点を当てて、その実用的な使用例について探ってみましょう。ジェネリック構造体は、異なるデータ型に対して柔軟に対応するための便利なツールです。以下で、いくつかの具体的なコード例を提供します。
ジェネリック構造体の基本
Golangのジェネリック構造体を理解するために、最初に基本的な例を見てみましょう。
package main
import "fmt"
type GenericStruct[T any] struct {
Value T
}
func main() {
intStruct := GenericStruct[int]{Value: 42}
strStruct := GenericStruct[string]{Value: "Hello, Generics!"}
fmt.Println(intStruct.Value)
fmt.Println(strStruct.Value)
}
このコードでは、GenericStruct
というジェネリック構造体を定義し、異なるデータ型(intとstring)を持つ構造体を作成しています。
スライスにジェネリック構造体を適用
次に、スライスにジェネリック構造体を適用する例を見てみましょう。
package main
import "fmt"
type GenericStruct[T any] struct {
Value T
}
func main() {
intSlice := []GenericStruct[int]{
{Value: 1},
{Value: 2},
{Value: 3},
}
strSlice := []GenericStruct[string]{
{Value: "apple"},
{Value: "banana"},
{Value: "cherry"},
}
fmt.Println(intSlice)
fmt.Println(strSlice)
}
このコードでは、異なるデータ型を持つジェネリック構造体をスライスに格納しています。これにより、異なる型の要素を持つスライスを簡単に作成できます。
ジェネリック構造体のメソッド
ジェネリック構造体にメソッドを追加することもできます。以下はその例です。
package main
import "fmt"
type GenericStruct[T any] struct {
Value T
}
func (gs *GenericStruct[T]) PrintValue() {
fmt.Println(gs.Value)
}
func main() {
intStruct := GenericStruct[int]{Value: 42}
strStruct := GenericStruct[string]{Value: "Hello, Generics!"}
intStruct.PrintValue()
strStruct.PrintValue()
}
このコードでは、ジェネリック構造体にPrintValue
メソッドを追加し、ジェネリックな方法で値を出力しています。
ジェネリック構造体の利点
ジェネリック構造体を使用することで、異なるデータ型に対して共通のコードを再利用でき、コードの冗長性を減らすことができます。また、型安全性を維持しながら柔軟性を高めることができます。
これらのコード例を参考に、Golangのジェネリック構造体の活用方法を探求してみてください。ジェネリック構造体は、多くの場面で効果的に使用できる強力なツールです。