ホームページ >バックエンド開発 >Golang >ジェネリック関数を使用して Go でオブジェクトの配列を効率的にマップするにはどうすればよいですか?

ジェネリック関数を使用して Go でオブジェクトの配列を効率的にマップするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-28 18:24:20594ブラウズ

How Can I Efficiently Map Arrays of Objects in Go Using a Generic Function?

ジェネリック関数を使用したオブジェクトの配列のマッピング

Go では、配列上で動作する関数には柔軟性のなさと関連するオーバーヘッドのため、特定の制限があります。引数をコピーして。この記事では、汎用トップレベル関数を使用して簡潔な方法でオブジェクトの配列をマップするアプローチについて説明します。

汎用関数を使用したワンライナー ソリューション

Go でオブジェクトの配列をマップするにはワンライナーで、Map という名前の汎用関数を次のように定義できます。

func Map[T, U any](ts []T, f func(T) U) []U {
    us := make([]U, len(ts))
    for i := range ts {
        us[i] = f(ts[i])
    }
    return us
}

この関数は、型 T の配列と関数 f を受け取ります。これは型 T のパラメータを受け取り、型 U の値を返します。マップされた値を含む型 U の配列を返します。

使用法

オブジェクトの配列をマップするには、次を使用できます。 Map 関数は次のようになります:

names := []string{"Alice", "Bob", "Carol"}
fmt.Println(Map(names, utf8.RuneCountInString))

このコードは次の出力を出力します。 stdout:

[5 3 5]

考慮事項

Map 関数はループに基づいており、配列上で動作するネイティブ関数と比較してオーバーヘッドが発生する可能性があります。簡潔な構文の利点と潜在的なパフォーマンスへの影響を比較検討することが重要です。

以上がジェネリック関数を使用して Go でオブジェクトの配列を効率的にマップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。