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

Go でオブジェクトの配列を効率的にマップするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-19 11:44:10458ブラウズ

How Can I Efficiently Map an Array of Objects in Go?

Go でのオブジェクトの配列のマッピング

Node.js では、map 関数を使用してオブジェクトの配列を値の配列。 Go でこれを簡潔に実現する方法を知りたいですか?

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
}

この関数を次のように使用できます:

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

歴史的コンテキスト: なぜ Map が存在しないのか標準 Go ライブラリ

Go 1.18 より前では、 golang.org/x/exp/slices 提案に対する GitHub の問題では、Map 関数の追加が検討されましたが、次の点への懸念から最終的には見送られました。

  • ワンライナー内の操作の隠れたコスト
  • Map 内での不確実なエラー処理
  • Go の伝統的なスタイルから逸脱したスタイルの推奨アプローチ

Streams API は、このような関数の将来のホームとなる可能性があると考えられています。

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

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