Map定义
Map创建
map[KeyType]ValueType //KeyType代表 key的类型,例如string,int等 //ValueType代表values的类型,例如string,int等
使用make函数创建map,map类型的变量初始值是nil,需要使用make()函数来分配内存
make(map[KeyType]ValueType, cap) //其中cap表示map的容量,比如这个map里可以放8对儿KeyValues对儿 //cap不是必须的
Map基本使用
func main(){ scoreMap := make(map[string]int,8) //使用Make创建一个key是string类型,value是int类型,容量为8的 Map scoreMap["张三"] = 90 //给scoreMap创建一个Key为张三,Value为90的值 scoreMap["李四"] = 100 //给scoreMap创建一个Key为李四,Value为100的值 fmt.Println(scoreMap) //打印这个Map fmt.Println(scoreMap["张三"]) //获取这个Map里张三对应的Value fmt.Printf("类型为: %T ",scoreMap) //打印scoreMap的类型 } 结果: map[张三:90 李四:100] 90 类型为: map[string]int
Map在声明的时候就初始化
func main() { userInfo := map[string]string{ "username": "pprof.cn", "password": "123456", } fmt.Println(userInfo) } 结果: map[password:123456 username:pprof.cn]
Map判断某个Key是否存在
语法
value, ok := map[key]
//Map通过Key获取value的时候有两个返回值:
//一个是value,如果value不存在就返回nil,不会报错
//一个是 ok,如果value存在ok=true,否则ok=false,可以通过ok是否为true 来判断value是不是存在
示例:
func main(){ scoreMap := make(map[string]int,8) scoreMap["张三"] = 90 scoreMap["李四"] = 100 v,ok := scoreMap["张三"] //会返回两个返回值,一个是value,一个是ok是true或者false fmt.Println(v,ok) if ok { fmt.Println(v) } else{ fmt.Println("value 不存在") } }
结果: 90 true 90
Map的遍历
func main(){ scoreMap := make(map[string]int,8) scoreMap["张三"] = 90 scoreMap["李四"] = 100 scoreMap["王五"] = 110 for k,v := range scoreMap{ fmt.Println(k, v) //打印出key value } 结果: 张三 90 李四 100 王五 110
使用delete()内建函数从map中删除一组KeyValue
语法
delete(map, key)
//map表示要删除KeyValue的map
//key表示要删除键值对的Key
示例
func main(){ scoreMap := make(map[string]int,8) scoreMap["张三"] = 90 scoreMap["李四"] = 100 scoreMap["王五"] = 110 fmt.Println("-------删除前--------") fmt.Println(scoreMap) delete(scoreMap, "张三") fmt.Println("-------删除后--------") fmt.Println(scoreMap) } 结果: -------删除前-------- map[张三:90 李四:100 王五:110] -------删除后-------- map[李四:100 王五:110]