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


Posted in Golang onNovember 17, 2021

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语言基础的资料请关注三水点靠木其它相关文章!

Golang 相关文章推荐
win10下go mod配置方式
Apr 25 Golang
go语言求任意类型切片的长度操作
Apr 26 Golang
golang goroutine顺序输出方式
Apr 29 Golang
解决Golang中goroutine执行速度的问题
May 02 Golang
goland 设置project gopath的操作
May 06 Golang
入门学习Go的基本语法
Jul 07 Golang
go goroutine 怎样进行错误处理
Jul 16 Golang
Go 中的空白标识符下划线
Mar 25 Golang
Go web入门Go pongo2模板引擎
May 20 Golang
Golang gRPC HTTP协议转换示例
Jun 16 Golang
Go gorilla securecookie库的安装使用详解
Aug 14 Golang
Go gorilla/sessions库安装使用
Aug 14 Golang
Go语言基础函数基本用法及示例详解
Nov 17 #Golang
golang中的struct操作
Nov 11 #Golang
Go 语言中 20 个占位符的整理
Oct 16 #Golang
Golang中channel的原理解读(推荐)
Oct 16 #Golang
Go语言并发编程 sync.Once
Oct 16 #Golang
Go 通过结构struct实现接口interface的问题
Oct 05 #Golang
golang实现一个简单的websocket聊天室功能
You might like
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
php生成图片缩略图的方法
2015/04/07 PHP
php实现购物车功能(下)
2016/01/05 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
最简单的js图片切换效果实现代码
2011/09/24 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
js实现滑动进度条效果
2020/08/21 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
gearman的安装启动及python API使用实例
2014/07/08 Python
仅利用30行Python代码来展示X算法
2015/04/01 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
Python实现的读写json文件功能示例
2018/06/05 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
python实现贪吃蛇双人大战
2020/04/18 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
建筑行业的大学生自我评价
2013/12/08 职场文书
大专学生求职信
2014/07/04 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
2015年化验室工作总结
2015/04/23 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
Python实现自动玩连连看的脚本分享
2022/04/04 Python