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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!