「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go でリスト理解機能を実現するにはどうすればよいですか?

Go でリスト理解機能を実現するにはどうすればよいですか?

2024 年 11 月 10 日に公開
ブラウズ:858

How Can I Achieve List Comprehension Functionality in Go?

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