GO:構造体の要素を検索する最良の方法

マウリシオサルトリ:

私はgo構造体を使用しています。これで、より多くの構造体を含む構造体ができました。この場合、スライス内のIdの値を調べる必要があります。最後の構造には要素の名前しかありません。現在の方法は、Genesというスライスの各要素を読み取って、文字列Nameを見つけるまでです。文字列Nameを見つけるためのより良い方法はありますか?

type GenresResponse struct {
    Count          int           `xml:"count,attr"`
    PageIndex      int           `xml:"page_index,attr"`
    PageSize       int           `xml:"page_size,attr"`
    NumOfResults   int           `xml:"num_of_results,attr"`
    TotalPages     int           `xml:"total_pages,attr"`
    Genes          []Gene        `xml:"gene"`
}

type Gene struct {
    Category       string        `xml:"category,attr"`
    Id             string        `xml:"id,attr"`
    Translations   Translations  `xml:"translations"`
}

type Translations struct{
    Translation    Translation   `xml:"translation"`
}

type Translation struct{
    Lang           string        `xml:"lang,attr"`
    Name           string        `xml:"name"`
}

そして、これは私がそれを読んでいる方法です

idToFind := "0"
    for _, genreItem := range responseStruct.Genes {
        if strings.ToLower(genreItem.Translations.Translation.Name) == strings.ToLower(myNameValue){
            idToFind = genreItem.Id
            break
        }
    }
Dekker1:

あなたのコードはうまく機能しているようで、私の知る限り、線形検索を行うための「より良い」方法はありません。

ただし、大量のデータを扱う場合(特に大量の検索を扱う場合)は、Gene配列が(この場合は名前で)並べ替えられるスキームを使用することをお勧めします。この場合、さまざまな高速検索アルゴリズム(バイナリ検索など)を適用できます。これにより、検索の複雑さがO(x)からO(log(x))に下がります。これは、大量のデータを検索するときに大きな違いを生む可能性があります。

バイナリ検索アルゴリズムの詳細については、ウィキペディアをご覧ください。http//en.wikipedia.org/wiki/Binary_search_algorithm

Goには、ソートとバイナリ検索を処理できるデフォルトのパッケージも含まれています。特に、例は非常に便利です。http//golang.org/pkg/sort/

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

構造体のすべての要素をゼロにする最良の方法

Goで2つの構造体を3番目の構造体にグループ化する最良の方法

構造体の配列を変更する最良の方法は?

Swift-構造体の配列を検索する方法

SQLの動的検索条件を構築する最良の方法

bsearchを使用して構造体の配列内の要素を検索する

構造体のリストを更新するための最良の方法

Cの構造体を破壊する最良の方法は何ですか

Goで1つの構造体を別の構造体に変換する方法

Goで構造体のゼロ値を安全に検出する方法は?

bsearch()-構造体の配列から文字列を検索する

構造体の配列でアイテムを検索する

構造体の配列を検索する

JSのもののようなC ++構造体を作成するための最良かつ効率的な方法

配列の値を構造体に割り当てる最良の方法

cでこの構造体を設計するための最良の方法は何ですか?

サブ要素の属性をGo構造体に直接解析する

構造体の検索方法(Swift)

この継承構造を修正する最良の方法は?

GoのTwitterライブラリ検索から構造体にデータを取得する

bigqueryの構造体の要素を集約する方法

cの構造体配列の要素を削除する方法

表形式のデータ構造を検出するための最良の方法は何ですか?

構造体配列の最後にSentinel値を提供する方法

場所で人を検索するための最良の方法

goのリストに「サブ」構造体を追加する方法

Goで構造体のモックを作成する方法

go langのHttp応答で構造体を印刷する方法

構造体の要素を確認する方法

TOP 一覧

  1. 1

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    CSSのみを使用して三角形のアニメーションを作成する方法

  4. 4

    ドロップダウンリストで選択したアイテムのQComboBoxスタイル

  5. 5

    ZScalerと証明書の問題により、Dockerを使用できません

  6. 6

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  7. 7

    Windows 10でのUSB入力デバイスの挿入/取り外しの検出

  8. 8

    Excel - count multiple words per cell in a range of cells

  9. 9

    PictureBoxで画像のブレンドを無効にする

  10. 10

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  11. 11

    スタート画面にシャットダウンタイルを追加するにはどうすればよいですか?

  12. 12

    Python / SciPyのピーク検出アルゴリズム

  13. 13

    Luaの文字列から特定の特殊文字を削除するにはどうすればよいですか?

  14. 14

    Pythonを使用して、リストからデータを読み取り、特定の値をElasticsearchにインデックス付けするにはどうすればよいですか?

  15. 15

    LinuxでPySide2(Qt for Python)をインストールするQt Designerはどこにありますか?

  16. 16

    goormIDEは、ターミナルがロードするデフォルトプロジェクトを変更します

  17. 17

    QGISとPostGIS(マップポイント(米国の地図上にraduisを使用した緯度と経度)

  18. 18

    MLでのデータ前処理の背後にある直感

  19. 19

    ターミナルから「入力ソースの変更」ショートカットを設定する

  20. 20

    パンダは異なる名前の列に追加します

  21. 21

    同じクラスの異なるバージョンを使用したクラスローディング:java.lang.LinkageError:名前の重複クラス定義を試行しました

ホットタグ

アーカイブ