ホームページ バックエンド開発 Golang Golangのマップとは何ですか

Golangのマップとは何ですか

Jan 13, 2023 am 11:07 AM
golang 言語を移動 map

golang では、マップは特別なデータ構造です。キー (インデックス) と値 (値) の形式の順序付けされていないコレクションです。連想配列または辞書とも呼ばれます。マップは値を素早く見つけられる理想的な構造は、与えられたキーに基づいて対応する値を素早く見つけることができるデータ構造です。

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"])
}
ログイン後にコピー

出力結果:

Golangのマップとは何ですか

この例では、mapLit は {key1: value1, key2: の使用を示しています。 value2} 形式を使用して、配列や構造体と同様にマップを初期化します。

上記のコードの mapCreated の作成メソッド mapCreated := make(map[string]float) は、mapCreated := map[string]float{}## と同等です。 # 。

mapAssigned は、mapList への参照であり、mapAssigned への変更は、mapLit の値にも影響します。

注: make() は使用できますが、マップの構築に new() を使用することはできません。参照オブジェクトを割り当てるために new() を誤って使用すると、null 参照ポインタが取得されます。これは、初期化されていない変数を宣言してそのアドレスを取得するのと同じです:

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}
ログイン後にコピー
[関連する推奨事項:

Go ビデオ チュートリアル プログラミング教育]

以上が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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Redisストリームを使用してGO言語でメッセージキューを実装する場合、user_idタイプの変換の問題を解決する方法は? Redisストリームを使用してGO言語でメッセージキューを実装する場合、user_idタイプの変換の問題を解決する方法は? Apr 02, 2025 pm 04:54 PM

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか? Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか? Apr 02, 2025 pm 05:09 PM

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? Apr 02, 2025 pm 04:12 PM

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Golangの目的:効率的でスケーラブルなシステムの構築 Golangの目的:効率的でスケーラブルなシステムの構築 Apr 09, 2025 pm 05:17 PM

GO言語は、効率的でスケーラブルなシステムの構築においてうまく機能します。その利点には次のものがあります。1。高性能:マシンコードにコンパイルされ、速度速度が速い。 2。同時プログラミング:ゴルチンとチャネルを介してマルチタスクを簡素化します。 3。シンプルさ:簡潔な構文、学習コストとメンテナンスコストの削減。 4。クロスプラットフォーム:クロスプラットフォームのコンパイル、簡単な展開をサポートします。

GOプログラミングでは、MySQLとRedisの間で接続を正しく管理し、リソースをリリースする方法は? GOプログラミングでは、MySQLとRedisの間で接続を正しく管理し、リソースをリリースする方法は? Apr 02, 2025 pm 05:03 PM

GOプログラミングのリソース管理:MySQLとRedisは、特にデータベースとキャッシュを使用して、リソースを正しく管理する方法を学習するために接続およびリリースします...

GOを使用してOracleデータベースに接続するときにOracleクライアントをインストールする必要がありますか? GOを使用してOracleデータベースに接続するときにOracleクライアントをインストールする必要がありますか? Apr 02, 2025 pm 03:48 PM

GOを使用してOracleデータベースに接続するときにOracleクライアントをインストールする必要がありますか? GOで開発するとき、Oracleデータベースに接続することは一般的な要件です...

マルチプロセスログを作成するときに、同時性が安全で効率的であることを確認する方法は? マルチプロセスログを作成するときに、同時性が安全で効率的であることを確認する方法は? Apr 02, 2025 pm 03:51 PM

マルチプロセスのログライティングの並行性セキュリティの問題を効率的に処理します。複数のプロセスが同じログファイルを同時に書き込みます。並行性が安全で効率的であることを確認する方法は?これは...

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

See all articles