【Go言語】ジェネリクスとは?具体的な使い方を解説します!

Golang

Golangのジェネリクスとは?どんな機能?

Go言語において、ジェネリクスとは、型をパラメータ化して、汎用的な関数やデータ構造を定義するための機能です。特定の型に依存しない関数やデータ構造を定義することができます。

使用方法は以下のようになります。

1, 関数やデータ構造を定義するときに、型パラメータを定義します。

func Example(t Type) { ... }

2, 型パラメータを実際の型に置き換えて使用します。

Example(123)
Example("hello")

ジェネリックスはGo言語には標準ではなく、第三者のパッケージを使用することで使用することができます。

具体的なコード例

ジェネリクスを使用すると、汎用的なデータ構造を定義することができます。

例えば、Stackというデータ構造を定義する場合、以下のようになります。

type Stack struct {
    items []interface{}
}

func (s *Stack) Push(item interface{}) {
    s.items = append(s.items, item)
}

func (s *Stack) Pop() interface{} {
    if len(s.items) == 0 {
        return nil
    }
    item := s.items[len(s.items)-1]
    s.items = s.items[:len(s.items)-1]
    return item
}

このスタックは、異なる型のアイテムを保存できますが、データ型の検証を行うことができません。

ですがジェネリクスを使用することで、スタックが保存できる型を限定することができます。

type Stack struct {
    items []T
}

func (s *Stack) Push(item T) {
    s.items = append(s.items, item)
}

func (s *Stack) Pop() T {
    if len(s.items) == 0 {
        return nil
    }
    item := s.items[len(s.items)-1]
    s.items = s.items[:len(s.items)-1]
    return item
}

このスタックは、T型のアイテムを保存できます。

これは一例であり、ジェネリクスは様々なデータ構造に適用することができます。これは、汎用的なデータ構造を定義し、特定の型に依存しないコードを書くために非常に有用です。

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