go-map
var map 变量名 map[keytype]valuetype
var a map[int]string
声明是不会分配内存的,初始化需要 make ,分配内存后才能赋值和使用。
map三种方式
var a map[int]string
a = make(map[int]string, 10)
a[2] = "aa"
a[3] = "bb"
a[4] = "cc"
fmt.Println(a)
b := make(map[int]string)
b[1] = "1"
b[2] = "2"
b[3] = "3"
fmt.Println(b)
c := map[int]string{
1 : "1",
2 : "2",
3 : "3",
}
fmt.Println(c)
运行结果:
map[2:aa 3:bb 4:cc]
map[1:1 2:2 3:3]
map[1:1 2:2 3:3]
stumap := make(map[string]map[string]string)
stumap["stu01"] = make(map[string]string)
stumap["stu01"]["name"] = "tom"
stumap["stu01"]["sex"] = "男"
stumap["stu01"]["address"] = "北京"
stumap["stu02"] = make(map[string]string)
stumap["stu02"]["name"] = "tom1"
stumap["stu02"]["sex"] = "男1"
stumap["stu02"]["address"] = "北京1"
fmt.Println(stumap)
fmt.Println(stumap["stu02"])
fmt.Println(stumap["stu02"]["sex"])
运行结果:
map[stu01:map[address:北京 name:tom sex:男] stu02:map[address:北京1 name:tom1 sex:男1]]
map[address:北京1 name:tom1 sex:男1]
男1
var m []map[string]string
m = make([]map[string]string, 2)
m[0] = make(map[string]string, 2)
m[0]["name"] = "a"
m[0]["age"] = "12"
m[1] = make(map[string]string, 2)
m[1]["name"] = "a"
m[1]["age"] = "12"
mm := map[string]string{
"name" : "c",
"age": "300",
}
m = append(m, mm)
fmt.Println(m)
运行结果:
[map[age:12 name:a] map[age:12 name:a] map[age:300 name:c]]
map 的容量达到后,再想 map 增加元素,会自动扩容,并不会发生 panic,也就是说 map 能动态的增长 键值对(key-value)
type Stu struct {
Name string
Age int
Address string
}
func main() {
stu := make(map[string]Stu, 10)
stu1 := Stu{"tom", 18, "beij"}
stu2 := Stu{"tom2", 18, "beij"}
stu["no1"] = stu1
stu["no2"] = stu2
fmt.Println(stu)
for k, v := range stu {
fmt.Printf("编号%v", k)
fmt.Printf("名字%v", v.Name)
fmt.Printf("年龄%v", v.Age)
fmt.Printf("地址%v", v.Address)
fmt.Println()
}
}
运行结果:
map[no1:{tom 18 beij} no2:{tom2 18 beij}]
编号no2名字tom2年龄18地址beij
编号no1名字tom年龄18地址beij
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: