💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
> map类型是一种键值(key/value)存储的哈希数据结构,读写数据都是通过key进行操作 [TOC] ## 定义map类型 > map类型语法 ``` var m map[key类型]value类型 ``` > 例子 ``` // key是字符串类型,value是int类型 var m1 map[string]int // key是字符串类型,value是string类型 var m2 map[string]string // key是字符串类型,value是User结构体类型 var m3 map[string]User // key是字符串类型,value是interface{}类型 var m4 map[string]interface{} ``` ## map变量默认值 > 没有初始化的map变量,默认值是nil ~~~ var m1 map[string]int if m1 == nil { fmt.Println("is nil") } fmt.Println(m1) ~~~ ## 初始化map > map必须要先初始化才能使用 (读写key) > 语法 ``` myMap := make(map[key类型]value类型) 或者 myMap := map[key类型]value类型{} ``` > 例子 ``` // 定义一个map var m1 map[string]int // 初始化map 1111 m1 = make(map[string]int) // 初始化map 2222 m := map[string]string{} //m := map[string]string{"name":"wk", "age":"28"} ``` > 也可通过短变量声明符快速初始化 ``` m := make(map[string]string) ``` ## 读写数据 ``` package main import "fmt" func main() { // 定义并初始化map m1 := map[string]int{} // 保存一个键值对,将key = tizi的值设置为100 m1["tizi"] = 100 // 读取key = tizi 的值, 这里得到的值是100 v := m1["tizi"] fmt.Println(v) } ``` ## 判断key是否存在 > 语法:第一个返回值elem是key的值,第二个返回值ok表示key是否存在 ``` elem, ok = m[key] ``` > 例子 ~~~ package main import "fmt" func main() { // 定义并初始化map,其中key=>val (类型为interface{},可为任意类型) m := map[string]interface{}{"name":"wk"} m["age"] = 28 m["super_rich"] = true v, ok := m["name"] // 判断key是否存在 if ok { fmt.Println("key存在, 值等于", v) } else { fmt.Print("key不存在!") } } ~~~ ## 删除数据 > 语法 ``` // 删除map中的指定key的数据 delete(m, key) ``` > 例子 ~~~ package main import "fmt" func main() { // 定义并初始化map m1 := map[string]string{} m1["name"] = "wangkun" fmt.Println(m1) // 删除key=name的数据 delete(m1, "name") fmt.Println(m1) } ~~~