この投稿では、Python のリスト内包表記を Go で再現する方法、具体的には次の構文を検討します。
array = [a for a in anotherArray if (some condition)]
Go オファーRob Pike によって提案されたフィルター ライブラリ。このライブラリは、スライスとブール関数を引数として受け取る Choose() 関数を提供します。指定された条件を満たす要素のみを含む新しいスライスを返します。
例:
import "google.golang.org/x/exp/slices" func TestChoose(t *testing.T) { a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} expect := []int{2, 4, 6, 8} result := slices.Choose(a, isEven) }
フィルター ライブラリは便利な機能を提供しますが、この解決策の公式ドキュメントでは、明示的な for ループに比べて効率が低下するため、その使用を避けるようアドバイスしています。
Go ドキュメントでは、リスト内包表記の代替として for ループを使用することを推奨しています。これらは、特に操作の順序を制御したり、データ生成を制限したりする必要がある状況で、より効率的なソリューションを提供します。
たとえば、次のコードは、ネストされたループの最小値を計算します。
min := min(abs(a[i], b[j]) for i in range(n) for j in range(i, n))
以上がGo で Python のリスト内包機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。