Map
Map在Go中提供映射关系的基于key-value的数据结构,,实际上内部使用的hash表实现的引用类型,必须初始化才能使用。判断map中的值时注意先判断错误,再执行操作。凡是返回有值和错误的都要先判断错误,因为有错误值为空,没有错误才有值。
package main
import (
"fmt"
"math/rand"
"sort"
"time"
)
//map的定义格式 :map[kyytype]type
//map为引用类型,直接声明后是nil,需要分配内存后才能使用
func main() {
//使用make为map类型分配内存,第二个参数指定具体大小,如果没有写则默认分配一个较小的内存
//而且map内存不够也会自动扩容
m1 := make(map[string]int, 8)
m1["卡卡"] = 100
m1["晨雨"] = 200
fmt.Println(m1)
fmt.Println(m1["卡卡"]) //输出要求的key对应的value
fmt.Println(m1["kk"]) //如果不存在这个key则输出对应value类型的零值,此处输出int类型的0
// map也支持声明时填充元素,这时会开辟比填充了的元素还要大些的内存,因此初始化时值为空也会开辟内存
userInfo := map[string]string{
"username": "沙河小王子",
"password": "123456",
}
// 开辟的内存比初始化加入元素需要的内存大,所以能继续添加
userInfo["卡卡"] = "zq"
fmt.Println(userInfo)
//判断map中某个值是否存在,使用value, ok := map[key]格式,其中ok为布尔值检验存在性
v, ok := m1