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 相关文章推荐
golang中实现给gif、png、jpeg图片添加文字水印
Apr 26 Golang
golang中的空slice案例
Apr 27 Golang
解决golang在import自己的包报错的问题
Apr 29 Golang
解决Go gorm踩过的坑
Apr 30 Golang
解决Golang中goroutine执行速度的问题
May 02 Golang
go类型转换及与C的类型转换方式
May 05 Golang
golang 实用库gotable的具体使用
Jul 01 Golang
深入理解go slice结构
Sep 15 Golang
Go语言并发编程 sync.Once
Oct 16 Golang
golang生成vcf通讯录格式文件详情
Mar 25 Golang
Golang 结构体数据集合
Apr 22 Golang
Go语言编译原理之变量捕获
Aug 05 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
php2html php生成静态页函数
2008/12/08 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
linux面试题参考答案(3)
2012/09/13 面试题
优秀团员个人的自我评价
2013/10/02 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
简单租房协议书范本
2014/08/20 职场文书
2019财务转正述职报告
2019/06/27 职场文书
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android