golang では、マップは特別なデータ構造です。キー (インデックス) と値 (値) の形式の順序付けされていないコレクションです。連想配列または辞書とも呼ばれます。マップは値を素早く見つけられる理想的な構造は、与えられたキーに基づいて対応する値を素早く見つけることができるデータ構造です。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
Go 言語のマップは、要素のペア (ペア) の順序付けされていないコレクションである特別なデータ構造であり、ペアはキー (インデックス) と値 (値) に対応するため、この構造は連想配列または連想配列とも呼ばれます。辞書は、値をすばやく見つけることができる理想的な構造であり、キーが与えられると、対応する値をすぐに見つけることができます。
Golang のマップのキーには、int、string、bool など、== を使用して比較できる任意のデータ型を指定でき、値には任意の型を指定できます。
マップは順序付けされていないデータ構造であるため、走査するたびに同じマップが一貫性のない順序で取得される可能性があります。
マップの概念
map は参照型であり、次の方法で宣言できます:
var mapname map[keytype]valuetype
where:
mapname はマップの変数名です。
keytype はキーのタイプです。
valuetype は、キーに対応する値のタイプです。
ヒント: [keytype] と valuetype の間にはスペースを使用できます。
マップは動的に拡張できるため、宣言時にマップの長さを知る必要はありません。初期化されていないマップの値は nil です。関数 len() を使用して取得できます。マップ内のペアの数。
[例]
package main import "fmt" func main() { var mapLit map[string]int //var mapCreated map[string]float32 var mapAssigned map[string]int mapLit = map[string]int{"one": 1, "two": 2} mapCreated := make(map[string]float32) mapAssigned = mapLit mapCreated["key1"] = 4.5 mapCreated["key2"] = 3.14159 mapAssigned["two"] = 3 fmt.Printf("Map literal at \"one\" is: %d\n", mapLit["one"]) fmt.Printf("Map created at \"key2\" is: %f\n", mapCreated["key2"]) fmt.Printf("Map assigned at \"two\" is: %d\n", mapLit["two"]) fmt.Printf("Map literal at \"ten\" is: %d\n", mapLit["ten"]) }
出力結果:
この例では、mapLit は {key1: value1, key2: の使用を示しています。 value2} 形式を使用して、配列や構造体と同様にマップを初期化します。
上記のコードの mapCreated の作成メソッド mapCreated := make(map[string]float)
は、mapCreated := map[string]float{}## と同等です。 # 。
mapCreated := new(map[string]float)次に、mapCreated["key1"] = 4.5 を呼び出すと、コンパイラはエラーを報告します:
invalid operation: mapCreated["key1"] (index of type *map[string]float).
マップの容量
配列とは異なり、マップは新しいキーと値に応じて動的に拡張および縮小できるため、固定長や最大制限はありませんが、マップをマークすることを選択します。 初期容量の形式は次のとおりです:make(map[keytype]valuetype, cap)例:
map2 := make(map[string]float, 100)マップが容量の上限に達したとき、新しいキーと値が追加された場合を指定すると、マップのサイズが自動的に 1 ずつ増加します。そのため、パフォーマンス上の理由から、大きなマップや急速に拡大するマップの場合は、容量が大まかにしかわかっていない場合でも、最初にそれを指定することをお勧めします。 これは、マップの具体的な例です。つまり、音階を対応するオーディオにマッピングするものです:
noteFrequency := map[string]float32 { "C0": 16.35, "D0": 18.35, "E0": 20.60, "F0": 21.83, "G0": 24.50, "A0": 27.50, "B0": 30.87, "A4": 440}[関連する推奨事項:
以上がGolangのマップとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。