map
可以说是每种语言必备的了,hash键值对,key->value,键值需要唯一。
map[keyType]valueType
使用
package main //必须有个main包
import "fmt"
func del(m map[int]string) {
delete(m, 2)
}
func main() {
var m1 map[int]string
fmt.Println("m1 = ", m1)
//对于map只有len,没有cap
fmt.Println("len = ", len(m1))
//可以通过make创建
m2 := make(map[int]string)
fmt.Println("m2 = ", m2)
fmt.Println("len = ", len(m2))
//可以指定长度,只是指定了容量,但是里面却是一个数据也没有
m3 := make(map[int]string, 2)
m3[1] = "c" //元素的操作
m3[2] = "go"
m3[3] = "c++"
fmt.Println("m3 = ", m3)//m3 = map[1:c 2:go 3:c++]
fmt.Println("len = ", len(m3))//len = 3
//初始化
m4 := map[int]string{1: "c", 2: "go", 3: "c++"}
fmt.Println("m4 = ", m4)//m4 = map[1:c 2:go 3:c++]
m4[1] = "c++"
m4[4] = "java" //追加,map底层自动扩容,和append类似
fmt.Println("m4 = ", m4)//m4 = map[1:c++ 2:go 3:c++ 4:java]
//遍历
//第一个返回值为key, 第二个返回值为value, 遍历结果是无序的
for key, value := range m4 {
fmt.Printf("%d =======> %s\n", key, value)
}
//如何判断一个key值是否存在
//第一个返回值为key所对应的value, 第二个返回值为key是否存在的条件,存在ok为true
index := 0
value, ok := m4[index]
if ok == true {
fmt.Println("value = ", value)
} else {
fmt.Println("key不存在 index = ",index) //key不存在 index = 0
}
delete(m4, 1) //删除key为1的内容
fmt.Println("m4 = ", m4)//m4 = map[2:go 3:c++ 4:java]
del(m4)
fmt.Println("m4 = ", m4)//m4 = map[3:c++ 4:java]
}
网友评论