Go语言基础map用法及示例详解

这篇文章主要为大家介绍了Go语言基础map的用法及示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

在这里插入图片描述

概述

  • map是基于key-value键值对的无序的集合
  • Go语言中的map是引用类型
  • 必须初始化才能使用。

语法

声明和初始化

配合make使用,否则是nil

 var map[KeyType]ValueType //KeyType:表示键的类型 //ValueType:表示键对应的值的类型 make(map[KeyType]ValueType, [cap]) //cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量 //当你的容量超过时会自动扩充 

例子:

 //1.声明 var name1 map[int]string   //key是int,value是string var name2 map[string]string  //key是string,value是string //字面量 names3:=map[int]string{0:"张三",1:"李四"} //2.分配内存 name1 = make(map[int]string, 2)         //2:map的容量,当你的容量超过时会自动扩充 name2 = make(map[string]string, 2) //3.赋值 //3.1 通过KeyType赋值 name1[0]="张三"   //key:0   value:张三 name1[1]="李四"   //key:1   value:李四 name1[2]="王五"   //key:2   value:王五    //已经超过了分配的的容量,会自动扩充 name2["A"]="张三" name2["B"]="李四" 

读取

根据KeyType来读取

如果keyType存在,就返回那个值,如果不存在,返回类型默认值值

 fmt.Println(name1[0]) fmt.Println(name2["B"]) 

测试map中key值是否存在

通过KeyType来取值时,会返回两个值,一个是vlue,另一个是是否存在的bool

 if value, ok := name1[5]; ok { fmt.Println("存在这个值",value) } else { fmt.Println("不存在这个值", value) } 

删除

 delete(map[int]string,[KeyType]) 

例子

 delete(name1 , 1) 

遍历

 range 

例子:

 for key,value:=range name1 { fmt.Printf("key=%d,value=%s\n",key,value) } for key,value:=range name2 { fmt.Printf("key=%s,value=%s\n",key,value) } 

总结

  1. map必须借助make分配内存空间,否则是nil
  2. 字面量初始化必修保证key是唯一的,否则error
  3. map传递的是引用,就是说形参会改变实参的值
  4. 直接对map对象使用[]操作符获得的对象不能直接修改状态
  5. map中存储指针而不是结构体

示例

 package main import "fmt" func main() { //一、声明和初始化【配合make使用,否则是nil】 //1.声明 var name1 map[int]string    //key是int,value是string var name2 map[string]string //key是string,value是string //2.分配内存 name1 = make(map[int]string, 2) //2:map的容量,当你的容量超过时会自动扩充 name2 = make(map[string]string, 2) //3.赋值 //3.1 通过KeyType赋值 name1[0] = "张三" //key:0   value:张三 name1[1] = "李四" //key:1   value:李四 name1[2] = "王五" //key:2   value:王五    //已经超过了分配的的容量,会自动扩充 name2["A"] = "张三" name2["B"] = "李四" //二、读取 //	1. 根据KeyType来读取,如果keyType存在,就返回那个值,如果不存在,返回类型默认值值 fmt.Println(name1[0]) fmt.Println(name2["B"]) //	2. 测试map中key值是否存在【通过KeyType来取值时,会返回两个值,一个是vlue,另一个是是否存在的bool】 if value, ok := name1[2]; ok { fmt.Println("存在这个值", value) } else { fmt.Println("不存在这个值", value) } //三、删除 delete(name1, 1)  //删除了李四 delete(name2, "C")   //没有这个C fmt.Println(name1) fmt.Println(name2) //四、遍历 for key,value:=range name1 { fmt.Printf("key=%d,value=%s\n",key,value) } for key,value:=range name2 { fmt.Printf("key=%s,value=%s\n",key,value) } } 

以上就是Go语言基础map用法及示例详解的详细内容,更多关于Go语言基础的资料请关注0133技术站其它相关文章!

以上就是Go语言基础map用法及示例详解的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 其他教程