Go Python のリスト内包表記と同等
Python のリスト内包表記は、要素のフィルタリングと変換によってリストを生成する簡潔な方法を提供します。ただし、Go に移行していて、この機能を再現するのが難しい場合は、次の解決策があります:
フィルター パッケージを使用したエレガントなソリューション
ありがたいことに、Go コミュニティは、Python のリスト内包表記と同様の機能を提供するフィルター パッケージを提供しています。具体的には、Choose 関数はスライスとフィルタリング関数を受け取り、フィルタを通過した要素のみを含む新しいスライスを返します。
import "github.com/rogpeppe/go-internal/filter" func Choose(slice []T, fn func(T) bool) []T
Example:
// Get even numbers from a list a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} expect := []int{2, 4, 6, 8} result := filter.Choose(a, isEven)
代替アプローチ: For ループ
フィルター パッケージは便利ですが、従来の for ループを使用することに注意することが重要です。は依然として実行可能かつ効率的なオプションです。 Go の for ループは柔軟性と最適化の機会を提供します。
for i := range a { if someCondition { result = append(result, a[i]) } }
結論
Go にはネイティブのリスト理解構文がないにもかかわらず、フィルター パッケージと for ループはリストのフィルター処理と変換のための堅牢なソリューションを提供します。フィルター パッケージは簡潔な構文を提供しますが、for ループは依然としてパフォーマンスが高く効率的な代替手段です。最終的に、アプローチの選択はアプリケーションの特定の要件によって決まります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3