企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
### 创建map ~~~ //自动推导类型 m1 := map[int]string{} fmt.Println(m1) //通过make创建 m2 := make(map[int]string) fmt.Println(m2) //通过make创建并指定长度 m3 := make(map[int]string,3) fmt.Println(m3,len(m3)) m3[0] = "jack" m3[1] = "milan" m3[2] = "richard" m3[3] = "mike" fmt.Println(m3,len(m3)) ~~~ ~~~ map[] map[] map[] 0 map[0:jack 1:milan 2:richard 3:mike] 4 //长度会自动进行扩容 ~~~ ### 赋值 ~~~ m2 := map[int]string{1: "jack", 2: "milan"} fmt.Println(m2, len(m2)) m2[1] = "mike" m2[3] = "mike" fmt.Println(m2, len(m2)) var m map[int]string m[0] = "jack" //nil的map是不能进行赋值的 fmt.Println(m) ~~~ ~~~ map[2:milan 1:jack] 2 map[1:mike 2:milan 3:mike] 3 panic: assignment to entry in nil map goroutine 1 [running]: main.main() /Users/artisan/go/src/test/test.go:7 +0x39 ~~~ ### 判断键是否存在 ~~~ userInfo := map[string]string{"name": "name", "age": "20"} value, exists := userInfo["name"] if exists { fmt.Println(exists, value) } ~~~ ~~~ true name ~~~ ### map遍历 ~~~ m := map[int]string{1: "jack", 2: "milan"} m[1] = "mike" m[3] = "mike" for key, value := range m { fmt.Println(key, value) } //第一个返回值为key所对应的value,第二个返回值为key是否存在的bool值,存在则为true if value, ok := m[1]; ok == true { fmt.Println("存在", value, ok) } value, ok := m[4] fmt.Println(value, ok) ~~~ ~~~ 3 mike 1 mike 2 milan 存在 mike true false ~~~ ### map删除 ~~~ m := map[int]string{1: "jack", 2: "milan"} m[1] = "mike" m[3] = "mike" delete(m, 3) fmt.Println(m) ~~~ ~~~ map[2:milan 1:mike] ~~~ ### map做函数参数 ~~~ func main() { m := map[int]string{1: "jack", 2: "milan"} m[1] = "mike" show(m) fmt.Println(m) } func show(m map[int]string) { m[1] = "Jiee" } ~~~ ~~~ map[1:Jiee 2:milan 3:mike] ~~~ ### map切片 ~~~ colors := []map[string]string{ {"red": "123"}, {"blue": "456"}, {"black": "789"}, } s := colors[:1] fmt.Println(cap(colors)) fmt.Println(len(s), cap(s), s) ~~~ ~~~ 3 1 3 [map[red:123]] ~~~