ホームページ バックエンド開発 Golang golangマップの追加、削除、変更

golangマップの追加、削除、変更

May 15, 2023 am 10:26 AM

Golang は非常に人気のあるプログラミング言語であり、Web 開発、システム プログラミング、ネットワーク プログラミング、その他の分野で広く使用されています。 golang では、マップは非常に一般的に使用されるデータ構造であり、キーと値のペアを簡単に追加、削除、変更できます。この記事では、地図データ構造の基本的な使い方と、地図の追加・削除・変更方法を紹介します。

1. マップ データ構造の基本的な使用法

map は、golang のキーと値のペアのデータ構造です。さまざまな種類のキーと値を格納できます。その使用法は、キーによって対応する値にアクセスするために使用できます。 golang では、make 関数を使用してマップ オブジェクトを作成できますが、その構文は次のとおりです:

m := make(map[keyType] valueType)
ログイン後にコピー

このうち、keyType はキーの種類、valueType は値の種類を表します。マップ オブジェクトを作成した後、キーを通じて対応する値を取得でき、len 関数を使用してマップ内の要素の数を取得できます。 Map には、指定したキーと値のペアを削除する削除関数や、マップ内のすべての要素を走査する範囲関数など、一連の組み込み関数も用意されています。

以下は、map の基本的な使用法を示す簡単なサンプル コードです。

package main

import "fmt"

func main() {

// 创建map对象
var m map[string]int
fmt.Println(m) // 输出空map对象

// 使用make函数创建map对象
m = make(map[string]int)
fmt.Println(m) // 输出空map对象

// 添加键值对
m["one"] = 1
m["two"] = 2
m["three"] = 3
fmt.Println(m)          // 输出{"one": 1, "two": 2, "three": 3}
fmt.Println(len(m))     // 输出3
fmt.Println(m["three"]) // 输出3

// 删除键值对
delete(m, "two")
fmt.Println(m)      // 输出{"one": 1, "three": 3}
fmt.Println(len(m)) // 输出2

// 遍历map
for k, v := range m {
    fmt.Println(k, v)
}
ログイン後にコピー

}

2. マップの追加、削除、および変更操作

  1. キーと値のペアをマップに追加します

golang の場合、キーと値のペアをマップに追加します 新しいキーと値のペアの追加は非常に簡単で、添え字演算子 [] を使用するだけです。キーが存在しない場合は、新しいキーと値のペアが作成され、キーがすでに存在する場合は、元の値が上書きされます。サンプルコードは次のとおりです:

m := make(map[string]int)
m["one"] = 1
m["two"] = 2
m[ "three"] = 3

このコードは空のマップ オブジェクトを作成し、それに 3 つのキーと値のペアを追加します。複数のキーと値のペアをマップに追加する場合は、ループ ステートメントを使用してこれを実現できます。

  1. マップはキーと値のペアを削除します

マップ内のキーと値のペアを削除するには、golang が提供する組み込み関数 delete を使用できます。 delete 関数は 2 つのパラメーターを渡す必要があります。最初のパラメーターは削除するマップ オブジェクトを表し、2 番目のパラメーターは削除するキーを表します。キーが存在する場合は、対応する値が削除され、キーが存在しない場合、関数は何も行いません。

以下はサンプル コードです:

m := make(map[string]int)
m["one"] = 1
m["two"] = 2
m["three"] = 3

delete(m, "two") // キー「two」を持つキーと値のペアを削除します

  1. map変更キー値ペア

マップ内のキーと値のペアを変更することも非常に簡単で、添字演算子 [] を使用するだけで済みます。キーが存在しない場合は、新しいキーと値のペアが作成され、キーがすでに存在する場合は、元の値が上書きされます。サンプルコードは次のとおりです:

m := make(map[string]int)
m["one"] = 1

m["one"] = 10 //キーの値を「1」から 10 に変更します

    #マップ内の値を安全に取得します
マップ内の値を取得するときに、対応するキーが存在しない場合、マップはその値タイプのゼロ値を返すため、問題が発生する可能性があります。これを回避するには、ok-idiom を使用してチェックします。 ok-idiom は、マップ内の値を取得するときに、最初に bool 型変数を使用してキーが存在するかどうかを受け取り、次に bool 値を使用して値が安全に取得できるかどうかを判断することを意味します。サンプルコードは次のとおりです:

m := make(map[string]int)

m["one"] = 1

if val, ok := m["two "]; ok {

fmt.Println(val)
ログイン後にコピー

} else {

fmt.Println("key not exist")
ログイン後にコピー
}

上記のコードでは、まずキー「two」で値を取得しようとします。存在しない場合は「キーが存在しません」と出力されます。 ok-idiom を使用すると、map の使用時に存在しないキーに遭遇することによって引き起こされる潜在的なバグを回避できます。

概要

この記事では、golang における地図データ構造の基本的な使い方と、地図の追加、削除、変更方法を紹介します。 golang プログラマーにとって、map の基本的な使い方をマスターすることは非常に重要であり、実際の開発でも頻繁に使用されます。マップを使用する場合、プログラムが正常に動作するためには、ヌルポインタ例外などの問題を回避するように注意する必要があります。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PPROFツールを使用してGOパフォーマンスを分析しますか? PPROFツールを使用してGOパフォーマンスを分析しますか? Mar 21, 2025 pm 06:37 PM

この記事では、プロファイリングの有効化、データの収集、CPUやメモリの問題などの一般的なボトルネックの識別など、GOパフォーマンスを分析するためにPPROFツールを使用する方法について説明します。

Goでユニットテストをどのように書きますか? Goでユニットテストをどのように書きますか? Mar 21, 2025 pm 06:34 PM

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

Debian OpenSSLの脆弱性は何ですか Debian OpenSSLの脆弱性は何ですか Apr 02, 2025 am 07:30 AM

OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? Mar 10, 2025 pm 05:38 PM

この記事では、ユニットテストのためにGOのモックとスタブを作成することを示しています。 インターフェイスの使用を強調し、模擬実装の例を提供し、模擬フォーカスを維持し、アサーションライブラリを使用するなどのベストプラクティスについて説明します。 articl

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? Mar 10, 2025 pm 03:20 PM

この記事では、GENICSのGOのカスタムタイプの制約について説明します。 インターフェイスがジェネリック関数の最小タイプ要件をどのように定義するかを詳しく説明し、タイプの安全性とコードの再利用性を改善します。 この記事では、制限とベストプラクティスについても説明しています

Goの反射パッケージの目的を説明してください。いつリフレクションを使用しますか?パフォーマンスへの影響は何ですか? Goの反射パッケージの目的を説明してください。いつリフレクションを使用しますか?パフォーマンスへの影響は何ですか? Mar 25, 2025 am 11:17 AM

この記事では、コードのランタイム操作に使用されるGoの反射パッケージについて説明します。シリアル化、一般的なプログラミングなどに有益です。実行やメモリの使用量の増加、賢明な使用と最高のアドバイスなどのパフォーマンスコストについて警告します

GOでテーブル駆動型テストをどのように使用しますか? GOでテーブル駆動型テストをどのように使用しますか? Mar 21, 2025 pm 06:35 PM

この記事では、GOでテーブル駆動型のテストを使用して説明します。これは、テストのテーブルを使用して複数の入力と結果を持つ関数をテストする方法です。読みやすさの向上、重複の減少、スケーラビリティ、一貫性、および

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか? トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか? Mar 10, 2025 pm 05:36 PM

この記事では、トレースツールを使用してGOアプリケーションの実行フローを分析します。 手動および自動計装技術について説明し、Jaeger、Zipkin、Opentelemetryなどのツールを比較し、効果的なデータの視覚化を強調しています

See all articles