ホームページ > バックエンド開発 > Golang > マップゴーランの使い方

マップゴーランの使い方

王林
リリース: 2023-05-10 19:46:05
オリジナル
667 人が閲覧しました

Golang は、効率が高く、構文がシンプルで学習しやすい非常に強力なプログラミング言語です。 Go の利点に関して言えば、主な理由の 1 つは、マップなどの組み込みデータ構造です。この記事では、Go マップの使用法について詳しく説明します。

Go マップは、キーと値のペアの順序付けされていないコレクションです。つまり、任意のタイプの値をキーと値として使用できます。マップ内のキーと値のペアは特定の順序ではなく、ハッシュ値の順序で格納されます。この機能については後で詳しく説明します。

マップの作成

Go でマップを作成するには、組み込み関数 make() を使用する必要があります。マップを作成し、それにキーと値のペアを追加する方法を見てみましょう。

m := make(map[string]int) // 创建一个字符串为键,int 类型为值的 map
m["foo"] = 42             // 向 map 中添加键为 "foo" 的值为 42
fmt.Println(m["foo"])     // 输出 map 中键为 "foo" 的值,输出 42
ログイン後にコピー

この例では、文字列キーと int 値を含むマップを作成し、キー「foo」を持つ値 42 をそれに追加します。コードの最後の行は、キー「foo」を持つマップ内の値を出力するため、出力として 42 が得られます。

マップの作成時に初期値を指定する別の方法もあります。次のように試してください:

m := map[string]int {
    "foo": 42,
    "bar": 24,
}
ログイン後にコピー

この例では、2 つのキーと値のペアを含むマップを作成します。ここで、キー「foo」の値は 42、キー「bar」の値は 24 です。 。

マップ内の値へのアクセス

Go でマップの値にアクセスするには、次のメソッドを使用できます。

val, ok := m["foo"]
fmt.Println(val, ok)     // 输出 42, true
ログイン後にコピー

ここで、val 変数はキーを格納します。 "foo" としてのマップ の値、および ok 変数は、マップ内にキー "foo" を持つエントリがあるかどうかを示します。

マップ内にそのようなエントリがない場合 (つまり、「foo」がキーではない場合)、ok 変数は false になります。したがって、マップ内の値が正常にアクセスされたかどうかを確認したい場合は、ok 変数の値を確認できます。

マップ内の値の反復処理

Go でのマップの値の反復処理は簡単で、for-range ループを使用できます。

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

for k, v := range m {
    fmt.Printf("key: %s, value: %d
", k, v)
}

// 输出:
// key: foo, value: 42
// key: bar, value: 24
ログイン後にコピー

この例では、for-range ループを使用してマップ m 内のキーと値を反復し、各反復でそれらを出力します。 for ループの構文は、マップのキーだけでなく、マップ内の値も反復することに注意してください。

Map の値の削除

Go マップの値の削除も非常に簡単で、delete() 関数を使用するだけです。

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

delete(m, "foo") // 删除 map 中键为 "foo" 的键值对
ログイン後にコピー

この例では、delete() 関数を使用して、マップ内のキー「foo」を持つキーと値のペアを削除します。削除後、マップにはキー「foo」を持つエントリは含まれなくなります。

マップのサイズと容量

Go では、マップにはサイズと容量のプロパティがあります。ただし、他の言語のデータ構造とは異なり、Go のマップには明示的な容量属性がありません。したがって、マップのサイズを知りたい場合は、以下に示すように組み込み関数 len() を使用する必要があります:

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

fmt.Println(len(m)) // 输出长度为 2
ログイン後にコピー

ここでは、len() 関数を使用してマップの長さ m を出力します。その出力は 2 です。

Map のパフォーマンスと使用上の推奨事項

Map は非常に強力なデータ構造ですが、使用には注意が必要です。マップは動的ハッシュ テーブルであるため、多くの開発者は他のデータ構造よりも高速であると考えています。ただし、実際の使用では、マップのパフォーマンスがメモリ管理やハッシュの競合によって影響を受け、コードが遅くなる可能性があります。

Go マップの使用に関するいくつかの提案を次に示します:

  • マップ内にキーと値のペアを追加しすぎないようにしてください。キーと値のペアが多すぎると、ハッシュの衝突が増える可能性があります。
  • 大きなマップを処理する必要がある状況では、同時実行安全な sync.Map タイプを使用することをお勧めします。
  • パフォーマンスを考慮する場合は、配列、スライス、またはその他のデータ構造の使用を検討する必要があります。

それにもかかわらず、map は非常に便利で柔軟なデータ構造です。賢明な方法で使用すれば、Go コードにとって理想的なものになります。

概要

この記事では、Golang でのマップの使用法について学びました。マップ内のエントリを作成、アクセス、反復、削除する方法と、マップのサイズと容量を表示する方法を学習しました。同時に、Go でこのデータ構造をより効果的に使用できるように、マップの使用に関するいくつかの提案も提供します。

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

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