Map
声明和初始化
func main() {
// 声明、初始化、赋值分三步
var map1 map[string]int
// map1["one"] = 1 // 此时不能直接使用
map1 = make(map[string]int)
map1["one"] = 1
// 声明+初始化、赋值分两步
var map2 = make(map[string]int)
map2["two"] = 2
// 声明+初始化+赋值
map3 := map[string]int{"three": 3}
fmt.Printf("%T %v\n", map1, map1) // map[string]int map[one:1]
fmt.Printf("%T %v\n", map2, map2) // map[string]int map[two:2]
fmt.Printf("%T %v\n", map3, map3) // map[string]int map[three:3]
}
判断map中是否存在某个key
func main(){
map4 := map[string]int{
"one": 1,
"two": 2,
"three": 3,
}
v, ok := map4["one"]
if ok {
fmt.Println(v)
} else {
fmt.Println("the key is not exist")
}
}
map是引用类型
func main(){
fmt.Println(map4) // map[one:1 three:3 two:2]
map5 := map4
map5["one"] = 4
fmt.Println(map4) // map[one:4 three:3 two:2]
}
元素为map类型的切片
func main(){
var mapSlice = make([]map[string]string, 3)
fmt.Println(mapSlice) // [map[] map[] map[]]
mapSlice[0] = make(map[string]string)
mapSlice[0]["name"] = "mike"
mapSlice[0]["sex"] = "male"
mapSlice[0]["city"] = "beijing"
fmt.Println(mapSlice) // [map[city:beijing name:mike sex:male] map[] map[]]
}
值为切片类型的map
func main(){
var sliceMap = make(map[string][]string)
sliceMap["chinese"] = []string{"beijing", "shanghai"}
sliceMap["japanese"] = []string{"tokyo", "osaka"}
fmt.Println(sliceMap) // map[chinese:[beijing shanghai] japanese:[tokyo osaka]]
}