golang 配列をマップする

WBOY
リリース: 2023-05-15 09:32:06
オリジナル
1088 人が閲覧しました

Go言語では配列をマップ型に変換する必要がある場合がありますが、この記事ではその実装方法を紹介します。

配列は特定の順序で配置されたデータ型のセットであり、マップはキーと値のペアの形式で格納されるデータ型です。配列は添字を使用して要素にアクセスできますが、マップでは値にアクセスするためにキーが必要です。一部のシナリオでは、要素にアクセスしやすくするために、配列をマップ型に変換する必要があります。

たとえば、長さ 5 の配列があり、5 人の生徒の名前と対応する成績が格納されています。これをマップ タイプに変換して、生徒の名前に基づいて対応する学年をすぐに見つけられるようにしたいと考えています。

最初に、学生の名前と成績を格納する型を定義する必要があります:

type Student struct {
    Name  string
    Score int
}
ログイン後にコピー

次に、5 人の学生の名前と成績を格納するために長さ 5 の配列を作成します:

students := [5]Student{
    {Name: "张三", Score: 90},
    {Name: "李四", Score: 85},
    {Name: "王五", Score: 78},
    {Name: "赵六", Score: 92},
    {Name: "钱七", Score: 88},
}
ログイン後にコピー

次に、学生名をキーとして使用し、学生の成績を値として使用して、マップ タイプを定義します。

scores := make(map[string]int)
ログイン後にコピー

次に、学生名を使用して、配列内の各要素を走査します。をキーとして、生徒を指定します。成績は値としてスコアに保存されます:

for _, student := range students {
    scores[student.Name] = student.Score
}
ログイン後にコピー

最後に、生徒の名前に基づいて、スコアに対応する成績を見つけることができます:

score, ok := scores["张三"]
if ok {
    fmt.Printf("张三的成绩为:%d
", score)
} else {
    fmt.Println("未找到张三的成绩")
}
ログイン後にコピー

完全なコードは次のとおりです。次のようになります。

package main

import "fmt"

type Student struct {
    Name  string
    Score int
}

func main() {
    students := [5]Student{
        {Name: "张三", Score: 90},
        {Name: "李四", Score: 85},
        {Name: "王五", Score: 78},
        {Name: "赵六", Score: 92},
        {Name: "钱七", Score: 88},
    }

    scores := make(map[string]int)
    for _, student := range students {
        scores[student.Name] = student.Score
    }

    score, ok := scores["张三"]
    if ok {
        fmt.Printf("张三的成绩为:%d
", score)
    } else {
        fmt.Println("未找到张三的成绩")
    }
}
ログイン後にコピー

出力 結果は次のようになります。

张三的成绩为:90
ログイン後にコピー

上記のコード例を通して、配列からマップへの変換が非常に簡単であることがわかります。必要なのは、キーと値のペアのタイプを定義し、マップ オブジェクトを作成し、配列を走査し、マップに要素を入力することだけです。

概要:

  • Go 言語では、配列をトラバースすることで配列をマップ型に変換できます。
  • 変換プロセス中に、キーと値のペアのタイプとマップ オブジェクトを定義する必要があります。
  • 変換後、キーに基づいて対応する値をすぐに見つけることができます。

以上がgolang 配列をマップするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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