23.map辞書の使用
2812 ワード
mapはキーと値のセットの組合せです.map内では無秩序です.キーとキーに対応する値をいつでも追加または削除できます.すべてのキー値を表示するにはrangeを使用します.一意のキー値を見つけるには、キーを使用して値を取得します.mapの作成にはmakeを使用する必要があります
このmapをグループの名前と年齢と見なしてキー値を書き込むことができます.
ダイレクトプリントmap
実行結果
個々の解析処理が必要な場合は,遍歴し,判断して処理文を加える必要がある.たとえば、17の値に特殊な表示タグ「*-->」を付けます.
もちろん、興味のあるmapキーを直接呼び出すこともできます.
このときのプリントアウトで、Annaの値も17になります.もし、map内にキーがあるかどうかを判断したいだけなら、このように書いてもいいです.
出力の結果を表示します.比較すると,キーが存在しない場合,返される値はゼロであり,falseの検出結果が得られることが分かった.この方法を用いてmap中のキーが存在するかどうかを判断することができる.既存の要素を削除する方法も知る必要があります.簡単です.直接deleteだけでいいです.こんな風に
印刷結果を見ると、Annaは既に姿を消していた.完全なコード
実行結果
以下に、複雑な例を示します.map要素値のタイプは構造体です.
実行結果
m := make(map [string]int)
このmapをグループの名前と年齢と見なしてキー値を書き込むことができます.
m := make(map [string]int)
m["Anna"] = 16
m["Tom"] = 15
m["Smith"] = 17
ダイレクトプリントmap
fmt.Println(m)
実行結果
map[Anna:16 Tom:15 Smith:17]
個々の解析処理が必要な場合は,遍歴し,判断して処理文を加える必要がある.たとえば、17の値に特殊な表示タグ「*-->」を付けます.
// ,
for k, v := range m {
if v == 17 {fmt.Print("* --> ")}
fmt.Println(k, v)
}
もちろん、興味のあるmapキーを直接呼び出すこともできます.
m["Anna"] = 17
fmt.Println(m)
このときのプリントアウトで、Annaの値も17になります.もし、map内にキーがあるかどうかを判断したいだけなら、このように書いてもいいです.
kv, ok := m["anna"]
fmt.Println(kv, ok)
kv1, ok1 := m["Anna"]
fmt.Println(kv1, ok1)
出力の結果を表示します.比較すると,キーが存在しない場合,返される値はゼロであり,falseの検出結果が得られることが分かった.この方法を用いてmap中のキーが存在するかどうかを判断することができる.既存の要素を削除する方法も知る必要があります.簡単です.直接deleteだけでいいです.こんな風に
delete(m, "Anna")
fmt.Println(m)
印刷結果を見ると、Annaは既に姿を消していた.完全なコード
package main
import "fmt"
func main() {
m := make(map [string]int)
m["Anna"] = 16
m["Tom"] = 15
m["Smith"] = 17
fmt.Println(m)
// ,
for k, v := range m {
if v == 17 {fmt.Print("* --> ")}
fmt.Println(k, v)
}
m["Anna"] = 17
fmt.Println(m)
kv, ok := m["anna"]
fmt.Println(kv, ok)
kv1, ok1 := m["Anna"]
fmt.Println(kv1, ok1)
delete(m, "Anna")
fmt.Println(m)
}
実行結果
map[Anna:16 Tom:15 Smith:17]
Anna 16
Tom 15
* --> Smith 17
map[Anna:17 Tom:15 Smith:17]
0 false
17 true
map[Tom:15 Smith:17]
以下に、複雑な例を示します.map要素値のタイプは構造体です.
package main
import (
"fmt"
)
type Vertex struct {
Lat, Long float64
}
var m map[string]Vertex
func main() {
m = make(map[string]Vertex)
m["Bell Labs"] = Vertex{
40.68433, -74.39967,
}
m["Bei Jing"] = Vertex{39.26, 115.25}
fmt.Println(m)
fmt.Println("--------I'm just a line.---------------")
for lat, _ := range m {
fmt.Println(lat, ":", m[lat].Lat, m[lat].Long)
}
delete(m, "Bei Jing")
fmt.Println(m)
}
実行結果
map[Bell Labs:{40.68433 -74.39967} Bei Jing:{39.26 115.25}]
--------I'm just a line.---------------
Bell Labs : 40.68433 -74.39967
Bei Jing : 39.26 115.25
map[Bell Labs:{40.68433 -74.39967}]