go语言学习(map)

map初始化定义

go 复制代码
package main

import "fmt"

func main() {
	//标准定义
	var nameMap map[string]string = map[string]string{
		"1": "张三",
		"2": "李四",
		"3": "王五",
	}
	fmt.Println(nameMap) //map[1:张三 2:李四 3:王五]

	//声明并赋值
	var nameMap1 = map[string]string{}
	fmt.Println(nameMap1) //map[]

	//简短声明
	nameMap2 := map[string]string{}
	fmt.Println(nameMap2) //map[]

	//make函数初始化
	nameMap3 := make(map[string]string)
	fmt.Println(nameMap3)//map[]
}

注意:go语言中map定义时必须初始化!!!否则后续使用会报错!!!

go 复制代码
	var nameMap4 map[string]string
	nameMap4["name"] = "123" //报错panic: assignment to entry in nil map
	fmt.Println(nameMap4)
  • 只声明了一个map变量,但没有初始化

  • 此时aMap的值是nil(零值)

  • nil的map赋值会导致运行时panic

这里简单提一嘴,go语言中map底层的数据结构是哈希表。

map取值

直接使用\[\]就可获取对于key的value

go 复制代码
	var nameMap map[string]string = map[string]string{
		"1": "张三",
		"2": "李四",
		"3": "王五",
	}
	fmt.Println(nameMap) //map[1:张三 2:李四 3:王五]

	fmt.Println(nameMap["2"])//李四

如果访问一个不存在的key会怎么样?

go 复制代码
	var nameMap map[string]string = map[string]string{
		"1": "张三",
		"2": "李四",
		"3": "王五",
	}
	fmt.Println(nameMap) //map[1:张三 2:李四 3:王五]

	fmt.Println(nameMap["2"])         //李四
	fmt.Printf("%#v\n", nameMap["4"]) //""

注意:当访问一个不存在的key时是不会像C++一样往里面插入的。

那如果我的map里面本来就有一个key对于的value是空字符串该如何区分呢?

go 复制代码
	var nameMap map[string]string = map[string]string{
		"1": "张三",
		"2": "李四",
		"3": "王五",
		"4": "",
	}
	tmp1, ok1 := nameMap["4"]
	fmt.Printf("%#v\n", tmp1) //""
	fmt.Println(ok1)          //true

	tmp2, ok2 := nameMap["5"]
	fmt.Printf("%#v\n", tmp2) //""
	fmt.Println(ok2)          //false

如上所示,map的\[\]是有两个返回值的,第一个返回值会返回对于key的value,第二个会返回这个key是否存在的bool值。

相关推荐
我命由我1234542 分钟前
棘轮效应极简理解
经验分享·学习·职场和发展·产品运营·求职招聘·职场发展·学习方法
a1117761 小时前
中文优先的企业 RAG 知识库 开源项目
开发语言·开源·kotlin
tt5555555555551 小时前
电工证学习笔记(二)
笔记·学习·电力
wc881 小时前
微软EDGE浏览器功能学习
前端·学习·edge
破z晓1 小时前
javascript 导出excel表
开发语言·javascript·excel
hPw0eKIqD1 小时前
一步一步学习使用FireMonkey动画() 使用动画组件为窗体添加动态效果
学习
t-think1 小时前
C++类和对象详解(一)
开发语言·c++
西门啐血1 小时前
上位机开发之假装有设备,使用 C# 模拟串口设备
开发语言·mongodb·c#
ask_baidu2 小时前
python实现Doris的streamLoad
开发语言·python
red_redemption2 小时前
自由学习记录(210)
学习