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

DDD
リリース: 2024-11-10 11:51:02
オリジナル
879 人が閲覧しました

How Can I Achieve List Comprehension Functionality in Go?

Python のリスト内包表記と同等の Go を使用

Python のリスト内包表記は、要素のフィルター処理と変換によってリストを生成する簡潔な方法を提供します。ただし、Go に移行していて、この機能を複製するのが難しい場合は、次の解決策があります:

フィルター パッケージを使用したエレガントなソリューション

ありがたいことに、Go コミュニティは、Python のリスト内包表記と同様の機能を提供するフィルター パッケージを提供しています。具体的には、Choose 関数はスライスとフィルタリング関数を受け取り、フィルタを通過した要素のみを含む新しいスライスを返します。

import "github.com/rogpeppe/go-internal/filter"

func Choose(slice []T, fn func(T) bool) []T
ログイン後にコピー

例:

// 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 ループは依然としてパフォーマンスが高く効率的な代替手段です。最終的に、どのアプローチを選択するかは、アプリケーションの特定の要件によって決まります。

以上がGo でリスト理解機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート