Golangのジェネリック構造体を活用した実用例

こんにちは、今回は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のジェネリック構造体の活用方法を探求してみてください。ジェネリック構造体は、多くの場面で効果的に使用できる強力なツールです。

タイトルとURLをコピーしました