go map
前言:
map类型是一个hash表,由键和值组成
正文:
map声明格式:
var mapname map[keytype] valuetype
mapname 为map的变量名
keytype 为键类型
valuetype 是键对应的值类型
未初始化的map的值是nil
map创建实例:
方式1:users := map[int]string{1: "lampol", 2: "liudehua"}
方式2:先声明,再赋值
var users map[int]string //定义一个空的map
users = make(map[int]string, 4) //为map分配空间
users[1] = "lampol1" //为map赋值
users[2] = "lampol2" //为map赋值
map的增删查改:
增加值:users[1] = "lampol1"
修改值 users[1] = "liming"
删除值 delete(users, 1)
查找值 name,exist :=users[1] #exist 为true表示存在,为false表示不存在
map遍历:
由于map里面的键是没有顺序的,所以输出是无序的
map无序的输出
for k, v := range users {
fmt.Println(k, v) //遍历出来是没有顺序的
}
map顺序输出:由于map是无序的,所以需要对键先排序,然后按键的顺序输出值
keys := make([]int, 0, len(users)) //生成一个int类型的切片
for k, _ := range users {
keys = append(keys, k)
}
sort.Ints(keys) //正序排序
fmt.Println(keys) //输出 [1 2 3 4 5]
for _, key := range keys {
fmt.Println(key, users[key]) //顺序排列
}
map类型切片:
示例1:生成map类型的切片
users := make([]map[string]string, 2) //生成一个map的切片
users[0] = make(map[string]string, 3) //初始化切片
users[0]["name"] = "lampol"
users[0]["age"] = "20"
users[0]["email"] = "13423@qq.com"
users[1] = make(map[string]string, 3) //初始化切片
users[1]["name"] = "liudehua"
users[1]["age"] = "48"
users[1]["email"] = "2342@qq.com"
示例2:值为切片类型的map
省市级联map
citys := make(map[string][]string, 2) //声明map 值为切片
sCitys := make([]string, 0, 3) //定义空切片 长度为0 容量是3
sCitys = append(sCitys, "青岛", "济南", "烟台") //切片赋值
citys["山东"] = sCitys
jCitys := make([]string, 0, 3) //定义空切片 长度为0 容量是3
jCitys = append(jCitys, "南京", "苏州", "常州") //切片赋值
citys["江苏"] = jCitys
fmt.Println(citys) //输出 map[山东:[青岛 济南 烟台] 江苏:[南京 苏州 常州]]
//循环遍历
for k, v := range citys {
for _, v2 := range v {
fmt.Println(k, v2)
}
}
完结
但行好事,莫问前程!
本文来自博客园,作者:yangphp,转载请注明原文链接:https://www.cnblogs.com/ypeih/p/17277782.html