Go 言語はオープンソース プログラミング言語であり、Google によって開発されたシステムレベルのプログラミング言語であり、高パフォーマンスで大規模なプロジェクトで広く使用されています。中でもGo言語のmapは非常に重要なデータ型であり、様々な開発で広く使われています。この記事ではGo言語のマップとは何か、またその使い方について紹介します。
1. マップとは
Go 言語では、マップはハッシュ テーブルに似たデータ構造です。マップは順序付けされておらず、キーと値のペアのセットで構成されており、各キーは 1 回だけ表示されます。マップ内のキーは、文字列、数値、ブール値など、等価比較をサポートするデータ型である必要があります。値には、文字列、数値、構造体、スライスなど、任意のタイプのデータを指定できます。
Go 言語でマップを宣言するには、以下に示すように make 関数を使用する必要があります。
var mapName = make(map[keyType]valueType)
このうち、mapName はマップの変数名、keyType はマップの型です。 key、valueType は値のタイプです。たとえば、以下に示すように、キー タイプが文字列、値タイプが int のマップを宣言できます:
var myMap = make(map[string]int)
2. マップ操作
マップに要素を追加するには、以下に示すように、代入シンボルを使用して代入する必要があります。
myMap["one"] = 1 myMap["two"] = 2
上の例では、2 つのキーと値のペアを myMap に追加しました。キーは「one」と「two」で、対応する値は1と2です。
マップ内の要素を取得するには、以下に示すように添字演算子 [] を使用できます。たとえば、添え字演算子 [] を使用して、myMap のキー「one」の値を取得し、それを変数 value に保存します。
キーがマップ内に存在しない場合、値の型に対応するゼロ値が返されることに注意してください。たとえば、次のように存在しないキーを取得した場合:
value := myMap["one"]
その場合、変数 value の値は int 型のゼロ値 0 になります。
要素の変更マップの長さを取得するには、以下に示すように、Go 言語の len 関数を使用できます。
value := myMap["three"]上記の例では、myMap の長さを取得し、それを可変長で保存します。
スレッド セーフ
デフォルトでは、マップはスレッド セーフではありません。複数のスレッドが同じマップを同時に変更すると、データの競合やデータの不整合が発生します。この問題を解決するために、Go 言語は sync.Map 型でスレッドセーフなマップを実装できる sync パッケージを提供します。比較演算子はサポートされません
動的スケーリング
以上がGo言語のマップとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。