Python のリスト内包表記は、既存のリストの要素をフィルター処理して変換することで新しいリストを作成する簡潔な方法です。これを Go で再現するのは難しい場合がありますが、検討できるアプローチがいくつかあります。
フィルター パッケージ
Rob Pike によって提案されたフィルター パッケージは、次の関数を提供します。これはChoose()と呼ばれ、リスト内包表記と同様のフィルタリング操作を実行します。スライスとフィルター関数を受け取り、条件を満たす要素のみを含む新しいスライスを返します。
直接反復
フィルターなどのパッケージが利用可能であるにもかかわらず、 Go のループ構造は、単純なリスト理解タスクのより効率的で簡単な代替手段を提供できます。たとえば、次の Python リスト内包表記:
[a for a in anotherArray if (some condition)]
は、次の Go ループに変換できます:
var result []int for _, a := range anotherArray { if someCondition { result = append(result, a) } }
MapReduce
For複数のフィルタリングやマッピング手順を伴う変換など、より複雑な変換の場合は、Go で MapReduce アプローチを使用できます。この手法を使用すると、タスクを独立したマップ操作とリデュース操作に分割することで、データ処理操作を並列化できます。
将来の開発
Go でのジェネリックスの導入により、リストを理解するためのより簡潔な方法が登場するのを参照してください。ただし、Go の現在のバージョンでは、ループ構造の使用が、単純さと効率性の観点から依然として推奨されるオプションです。
以上がGo でリストの内包表記を再現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。