Golang の Map データ構造を深く分析するための簡潔なガイド

WBOY
リリース: 2024-01-16 10:12:10
オリジナル
1267 人が閲覧しました

Golang の Map データ構造を深く分析するための簡潔なガイド

Golang のマップは、キーを値に関連付けることができる、非常に一般的に使用されるデータ構造です。マップは、記事内で単語が出現する回数を数えたり、学生のテストの点数を保存したりするなど、さまざまな状況で非常に役立ちます。

この記事では、Golang での Map について、Map とは何か、Map の特徴、Map の使い方、Map の横断などをわかりやすく紹介し、徐々に紹介していきます。学んだ知識を定着させるために、いくつかのコード例を作成します。

1. マップとは何ですか?

マップは、キーを値にマップするデータ構造です。各キーは 1 回のみ出現でき、対応する値は繰り返し出現できます。 Golang では、Map の実装はハッシュ テーブルに似ており、挿入、削除、検索操作を迅速に実行できます。

Map の宣言形式は次のとおりです:

map[KeyType]ValueType
ログイン後にコピー

ここで、KeyType と ValueType はそれぞれキーと値のタイプを表します。以下に例を示します。

var students map[string]int
ログイン後にコピー

この例ではマップを定義します。キーのタイプは文字列、値のタイプは int です。初期化前、このマップは nil であり、使用できません。

2. マップの特性

  1. Map のキーは、int、float、string、bool などの「==」および「!=」演算子をサポートするタイプである必要があります。 、など。次の 3 つの場合を除いて、Golang の型はマップ キーとして使用できます:

a. 次の 2 つのフィールドを持つ構造体:

type Key struct {
  x, y int
}
ログイン後にコピー

b. 配列型、および要素type は、「==」および「!=」演算子をサポートするタイプです:

type Key [2]int
ログイン後にコピー

c. インターフェイスのタイプ、および動的値は nil ではありません:

type Key interface {
}
ログイン後にコピー
  1. Map は Aゼロ値が nil である参照型。 nil 値を操作しようとすると、実行時パニックが発生します。
  2. make 関数を使用してマップを初期化します:
students := make(map[string]int)
ログイン後にコピー
  1. マップに要素を追加または変更します:
students["Tom"] = 90
students["Jerry"] = 80
students["Mary"] = 95
ログイン後にコピー

必要な場合Map 要素を変更するには、同じキーを使用するだけで済みます。新しいキーと値のペアを追加する場合は、キーの位置に値を書き込むだけです。

  1. マップから要素を削除:
delete(students, "Jerry")
ログイン後にコピー

削除関数の最初のパラメータはマップで、2 番目のパラメータは削除するキーです。

  1. 特定のキーがマップに存在するかどうかを確認する:
score, ok := students["Tom"]
if ok {
  fmt.Printf("Tom's score is %d.
", score)
} else {
  fmt.Println("Tom not found.")
}
ログイン後にコピー

3. マップの使用方法

以下の具体的な例を見てみましょう。文字列があり、その中の各単語の出現数を数えたいとします。

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "Go is a programming language.Golang is a updated version of the Go language. It was created by Google."

    // 将字符串按照空格分隔成切片
    words := strings.Fields(str)

    // 创建一个空Map,用于统计单词出现次数
    count := make(map[string]int)

    // 统计单词出现次数
    for _, word := range words {
        count[word]++
    }

    // 打印结果
    for word, cnt := range count {
        fmt.Printf("%s: %d
", word, cnt)
    }
}
ログイン後にコピー

この例では、まず strings パッケージの Fields 関数を使用して文字列を文字列スライスに分割し、次に空のマップを作成します。次に、for ループを使用してスライス内の各単語をキーとして使用し、対応する値に 1 を加えて、最後にマップを走査して各単語が出現する回数を出力します。

4. マップの走査

Golang では、for ループを使用して Map を走査できます。マップを走査するときに返されるキーと値のペアには順序がありません。

  1. マップのキーをトラバースする:
for key := range students {
    fmt.Println(key)
}
ログイン後にコピー
  1. マップの値をトラバースする:
for _, value := range students {
    fmt.Println(value)
}
ログイン後にコピー
  1. マップのキー値を走査する 右:
for key, value := range students {
    fmt.Printf("key: %s, value: %d
", key, value)
}
ログイン後にコピー

上記の走査メソッドは、文字列キーを持つマップであっても、他のタイプのキーを持つマップであっても、任意のマップを走査するために使用できます。 。

概要

この記事では、主に Golang における Map について、定義、特徴、使い方、トラバースなどを含めて紹介します。実際の開発では、Map は非常に一般的に使用されるデータ構造であり、Golang 開発者が Map の使用法を習得することは非常に必要です。

以上がGolang の Map データ構造を深く分析するための簡潔なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!