囲碁言語基本マップの使い方と例
2022-01-06 20:48:30
概要
- map は、キーと値のペアに基づく順序不同のコレクションです
- GoのMapは参照型です
- 使用するには初期化する必要があります。
構文
宣言と初期化
makeで使用、それ以外はnilです。
var map[KeyType]ValueType
//KeyType:indicates the type of the key
//ValueType:indicates the type of the value corresponding to the key
make(map[KeyType]ValueType, [cap])
//cap represents the capacity of the map, this parameter is not required but we should specify a suitable capacity for the map when initializing it
//it will be automatically expanded when you exceed it
例
//1. Declaration
var name1 map[int]string //key is int,value is string
var name2 map[string]string //key is string,value is string
//literals
names3:=map[int]string{0:"Zhang San",1:"Li Si"}
//2. Allocate memory
name1 = make(map[int]string, 2) //2: the capacity of the map, when you exceed the capacity will automatically expand
name2 = make(map[string]string, 2)
//3. Assigning values
//3.1 Assigning values by KeyType
name1[0]="Zhang San" //key:0 value:Zhang San
name1[1]="李四" //key:1 value:李四
name1[2]="王五" //key:2 value:王五 //already exceeded the allocated capacity, will automatically expand
name2["A"]="Zhang San"
name2["B"]="李四"
読む
KeyTypeで読み取る
keyTypeが存在すればその値を返し、存在しなければ型のデフォルト値を返す
fmt.Println(name1[0])
fmt.Println(name2["B"])
キーとなる値がマップに存在するかどうかをテストする
KeyTypeで値を取ると、値と存在するかどうかのboolの2つの値が返されます。
if value, ok := name1[5]; ok {
fmt.Println("This value exists",value)
} else {
fmt.Println("This value does not exist", value)
}
削除
delete(map[int]string,[KeyType])
例
delete(name1 , 1)
イテレートスルー
range
例
for key,value:=range name1 {
fmt.Printf("key=%d,value=%s\n",key,value)
}
for key,value:=range name2 {
fmt.Printf("key=%s,value=%s\n",key,value)
}
概要
- mapはmakeの助けを借りてメモリ空間を確保しなければならず、そうでない場合はnilである。
- リテラル初期化はキーが一意であることを保証しなければならず、さもなければエラーとなる
- マップは参照渡しで、フォームパラメータが実パラメータの値を変更することを意味する
- マップオブジェクトに直接[]演算子を使用して取得したオブジェクトは、状態を直接変更することはできません。
- マップに構造体ではなくポインタを格納する
例
package main
import "fmt"
func main() {
//I. Declare and initialize [use with make, otherwise nil]
//1. declaration
var name1 map[int]string //key is int,value is string
var name2 map[string]string //key is string,value is string
//2. Allocate memory
name1 = make(map[int]string, 2) //2: the capacity of the map, when you exceed the capacity will automatically expand
name2 = make(map[string]string, 2)
//3. Assigning values
//3.1 Assigning values by KeyType
name1[0] = "Zhang San" //key:0 value:Zhang San
name1[1] = "李四" //key:1 value:李四
name1[2] = "王五" //key:2 value:王五 //already exceeded the allocated capacity, will automatically expand
name2["A"] = "Zhang San"
name2["B"] = "李四"
// II. Read
// 1. read according to KeyType, if the keyType exists, return that value, if not, return the type default value value
fmt.Println(name1[0])
fmt.Println(name2["B"])
// 2. test whether the key value in the map exists [when the value is taken by KeyType, two values are returned, one is vlue and the other is a bool whether it exists]
if value, ok := name1[2]; ok {
fmt.Println("This value exists", value)
} else {
fmt.Println("This value does not exist", value)
}
// iii. delete
delete(name1, 1) //deleted Li Si
delete(name2, "C") //no such C
fmt.Println(name1)
fmt.Println(name2)
// IV. Iteration
for key,value:=range name1 {
fmt.Printf("key=%d,value=%s\n",key,value)
}
for key,value:=range name2 {
fmt.Printf("key=%s,value=%s\n",key,value)
}
}
上記は、Go言語基本マップの使い方と例の詳細です。Go言語基本に関するより詳しい情報は、スクリプトハウスの他の関連記事にご注目ください
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン