golang中的map
作者:互联网
二话不说,撸码吧
package main
import (
"fmt"
)
/**
* @Description:golang中的map
* @Author: guai
* @Date:2020/2/22 11:28
**/
func main() {
//1、map
//map是key-value数据结构,又称为字段或者关联数组,类似其他语言中的集合
//1.1、map的声明
//var map变量名 map[keyType] valueType
//注意map在声明时不会分配内存,需要使用make初始化
//声明一个map
var map1 map[string]int
//初始化map
map1 = make(map[string]int, 10)
map1["guai"] = 18
map1["shuai"] = 16
//打印map的内容
fmt.Println("map1中的内容:", map1, "map长度为:", len(map1))
//遍历map1中的值
for key, value := range map1 {
fmt.Println("key:", key, " value:", value)
fmt.Println("key:", key, " value:", value)
}
//1.2、对map内容的增删改查
//增与改
//当map中没有该key值时增加
map1["cabbage"] = 120
fmt.Println("map1中的内容:", map1)
//当map中有该key值时修改value
map1["cabbage"] = 18
fmt.Println("修改key=“cabbage”中的内容:", map1)
//根据key值查找value
fmt.Println("key=shuai val=", map1["guai"])
//使用内置函数delete() 根据key值删除
delete(map1, "cabbage")
fmt.Println("删除map1中key=“cabbage”的内容:", map1)
//2、map切片
//类型为map的切片为称为map切片,这样map个数就可以动态变化了
//2.1、声明一个map切片
var monsters []map[string]int
monsters = make([]map[string]int, 2)
if monsters[0] == nil {
monsters[0] = make(map[string]int, 2)
monsters[0]["萝卜"] = 18
monsters[0]["白菜"] = 16
}
if monsters[1] == nil {
monsters[1] = make(map[string]int, 2)
monsters[1]["西红柿"] = 18
monsters[1]["茄子"] = 16
}
//使用append追加一个key-value
monsters = append(monsters, map[string]int{"冬瓜": 12})
fmt.Println(monsters)
//3、map排序
//拱廊中没有正对map的key进行排序的方法
//golang中的map默认使无序的,注意也不是按照添加的顺序村方法,每次遍历的结果可能不一样
//4、map使用细节
//4.1、map是引用类型
//4.2、map可以自动扩容
//4.3、map的value的类型也可以是struct类型
//4.2、map自动扩容测试
//定义map
var mapExpansion map[int]int
//初始化一个长度为1
mapExpansion = make(map[int]int, 1)
//实际赋了两个值
mapExpansion[1] = 1
mapExpansion[2] = 2
fmt.Println("map扩容:", mapExpansion)
//4.3、value类型为结构体
students := make(map[string]Stu, 3)
students["1001"] = Stu{"guai", 16}
students["1002"] = Stu{"shuai", 18}
for key, stu := range students {
fmt.Println("学号:", key)
fmt.Println("姓名:", stu.name)
fmt.Println("年龄:", stu.age)
}
}
//定义一个结构体(和c可太像了)
type Stu struct {
name string
age int
}
任性的萝卜
发布了38 篇原创文章 · 获赞 0 · 访问量 931
私信
关注
标签:map,fmt,golang,map1,key,Println,monsters 来源: https://blog.csdn.net/weixin_44373940/article/details/104441769