Go最新のプログラミング言語のほとんどには、_dictionary_または_hash_タイプの概念があります。これらのタイプは一般に、*値*にマップされる*キー*とペアでデータを保存するために使用されます。Goでは、_map_データ型はほとんどのプログラマーが_dictionary_型と考えるものです。キーに値をマップし、Goにデータを保存する便利な方法であるキーと値のペアを作成します。+`が続き、その後に値データ型が続くことで構築されます。{}:map[]{}通常、Goでマップを使用して、IDに含まれる情報などの関連データを保持します。データを含むマップは次のようになります。"ocean"}中括弧に加えて、キーと値のペアを接続するコロンがマップ全体にあります。コロンの左側の単語がキーです。+`など)を使用できます。マップ例のキーは次のとおりです。"コロンの右側の単語は値です。値は任意のデータ型にすることができます。サンプルマップの値は次のとおりです。"他のデータ型と同様に、マップを変数内に保存し、印刷することができます。name:Sammy]キーと値のペアの順序がずれている可能性があります。Goでは、マップのデータ型は順不同です。順序に関係なく、キーと値のペアはそのまま残り、関係の意味に基づいてデータにアクセスできます。マップアイテムへのアクセス関連するキーを参照することにより、マップの値を呼び出すことができます。マップはデータを保存するためのキーと値のペアを提供するため、Goプログラムで重要かつ有用なアイテムになる可能性があります。+`を呼び出して分離できます。マップと関連キーを保持する変数。それを印刷してみましょう:fmt.Println(sammy["name"])出力として値を受け取ります。OutputSammyマップはデータベースのように動作します。スライスの場合のように整数を呼び出して特定のインデックス値を取得する代わりに、キーに値を割り当て、そのキーを呼び出して関連する値を取得します。+`マップの残りの値を呼び出すことができます。oceanマップデータタイプでキーと値のペアを使用することにより、キーを参照して値を取得できます。一部のプログラミング言語とは異なり、Goにはマップのキーまたは値をリストする_convenience_関数がありません。.keys()`メソッドです。+`演算子を使用して反復を許可します。value)}Goでマップを移動すると、2つの値が返されます。最初の値がキーになり、2番目の値が値になります。Goは、これらの変数を正しいデータ型で作成します。」も文字列になります。"Sammy"キーだけのリストを取得するには、範囲演算子を再度使用できます。キーにアクセスする変数を1つだけ宣言できます。keys)プログラムは、キーを格納するスライスを宣言することから始まります。出力には、マップのキーのみが表示されます。"animal"]繰り返しますが、キーはソートされていません。+`関数を使用します。sort.Strings(keys)この機能を使用すると、次の出力が表示されます。"name"]同じパターンを使用して、マップ内の値のみを取得できます。次の例では、スライスを事前に割り当てて割り当てを回避し、プログラムをより効率的にします。items)まず、キーを保存するスライスを宣言します。必要なアイテムの数がわかっているため、スライスをまったく同じサイズで定義することで、潜在的なメモリ割り当てを回避できます。次に、インデックス変数を宣言します。+」演算子を使用してキーの値を無視します。出力は次のようになります。+`関数を使用できます。"ocean"}fmt.Println(len(sammy))出力には、マップ内のアイテムの数が表示されます。Output4Goにはキーと値を取得するための便利な関数が付属していませんが、必要なときにキーと値を取得するのに数行のコードしか必要ありません。存在の確認Goのマップは、要求されたキーが欠落している場合、マップの値タイプのゼロ値を返します。このため、保存されたゼロと欠落キーを区別する代替方法が必要です。存在しないことがわかっているマップで値を検索し、返される値を見てみましょう。map[string]int{}fmt.Println(counts["sammy"])次の出力が表示されます。」がマップにない場合でも、Goは「+0」の値を返しました。+`のゼロ値を返すためです。多くの場合、これは望ましくなく、プログラムのバグにつながります。マップで値を検索するとき、Goは2番目の_optional_値を返すことができます。」イディオムと呼ばれます。+」という名前を付けます。+`はfalseになります。+`変数を使用して、プログラムで何をするかを決定できます。found")}これにより、次の出力が得られます。elseブロックと組み合わせることができます。これにより、このチェックに単一のステートメントを使用できます。found")}Goでマップから値を取得するときは、プログラムのバグを回避するために、その存在も確認することを常にお勧めします。マップの変更マップは変更可能なデータ構造であるため、変更できます。このセクションのマップアイテムの追加と削除を見てみましょう。マップアイテムの追加と変更メソッドまたは関数を使用せずに、キーと値のペアをマップに追加できます。+」を使用して新しい値を設定します。+`というマップに追加することで、この動作を確認できます。+`キーと値のペアが表示されます。Sammy:sammy-shark]マップは順序付けられずに返されるため、このペアはマップ出力のどこでも発生する可能性があります。+`マップを使用する場合、追加のキーと値のペアが含まれます。この構文を使用して、キーに割り当てられた値を変更することもできます。この場合、既存のキーを参照し、別の値を渡します。」というマップを考えてみましょう。“`キーに渡された整数値を更新する必要があります。Println()+`関数を使用して、マップが変更されたことを確認します。+`の更新された値が表示されます。mary:428]フォロワーの数が整数値「305」から「342」にジャンプしたことがわかります。このメソッドを使用して、キーと値のペアをユーザー入力付きのマップに追加できます。+」という簡単なプログラムを作成しましょう。`で、最初に元のマップを定義します。次に、名前を反復処理するループを設定します。ユーザーに名前を入力し、それを保存する変数を宣言するように要求します。次に、エラーが発生したかどうかを確認します。その場合、プログラムは_panic_で終了します。`は復帰を含む入力全体をキャプチャするため、入力からスペースを削除する必要があります。+`関数を使用します。+`ブロックは、名前がマップに存在するかどうかを確認し、フィードバックを出力します。名前が存在する場合、ループの先頭に戻ります。名前がマップにない場合は、ユーザーにフィードバックを提供し、関連する名前の新しいユーザー名を要求します。プログラムは再度エラーがあるかどうかを確認します。エラーなしで、キャリッジリターンが削除され、ユーザー名の値が名前キーに割り当てられ、データが更新されたというフィードバックが出力されます。usernames.go次の出力が表示されます。+`を押してプログラムをエスケープします。これは、マップをインタラクティブに変更する方法を示しています。+`でプログラムを終了するとすぐに、ファイルの読み書きを処理する方法を実装しない限り、すべてのデータが失われます。+`構文を使用して、マップにアイテムを追加したり、値を変更したりできます。マップアイテムの削除マップデータタイプ内でキーと値のペアを追加して値を変更できるように、マップ内のアイテムを削除することもできます。delete()+`を使用できます。最初の引数は、削除元のマップです。2番目の引数は、削除するキーです。+」権限は不要になったため、マップから削除します。次に、地図を印刷して、削除されたことを確認します。+`マップから削除します。すべての値のマップをクリアする場合は、同じタイプの空のマップと同じ値に設定することにより、マップをクリアできます。これにより、使用する新しい空のマップが作成され、古いマップはガベージコレクターによってメモリからクリアされます。map[int]string{}fmt.Println(permissions)出力は、キーと値のペアがない空のマップがあることを示しています。Outputmap[]マップは変更可能なデータ型であるため、追加、変更、およびアイテムの削除とクリアが可能です。結論このチュートリアルでは、Goのマップデータ構造について説明しました。マップはキーと値のペアで構成され、インデックス作成に依存せずにデータを保存する方法を提供します。これにより、その意味と他のデータ型との関係に基づいて値を取得できます。