IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> go map基础知识简单总结 -> 正文阅读

[Java知识库]go map基础知识简单总结

什么是map?

在go中,map是将值(key)和建(value)关联的内置类型,通过相应的键可以获取到值。

声明:

func main() {
	var mapList map[string]int
	//fmt.Println(mapList)
	if mapList == nil {
		fmt.Println(mapList)
	}
}
// 声明 
// key 是 string类型 
// value 是 类型 
// 变量名 mapList 的 map 
// 此时的mapList 是空的,默认值是 nil 

初始化/创建:

// 声明后是无法使用的 
// 添加key-value 会报异常
func main() {
	var mapList map[string]int
	mapList["a"] = 1
	mapList["b"] = 2
	mapList["c"] = 3
	fmt.Println(mapList)
}
// 输出:panic: assignment to entry in nil map
// 需要make去创建该map,也可以理解成初始化
func main() {
	var mapList map[string]int
    if mapList == nil{
        mapList = make(map[string]int)
    }
	mapList["a"] = 1
	mapList["b"] = 2
	mapList["c"] = 3
	fmt.Println(mapList)
}
// 输出:map[a:1 b:2 c:3]
// 测试
func main() {
	var mapList map[string]int
	if mapList == nil{
		mapList = make(map[string]int)
	}
	mapList[""] = 1	// "" 空字符也算一个元素
	mapList[""] = 4	 // 重复会覆盖,上一个
	mapList["a"] = 2 
	mapList["a"] = 5 // 重复会覆盖,上一个
	mapList["c"] = 3 
	fmt.Println(mapList)
}
// 输出:map[:4 a:5 c:3]

创建时初始化

// 声明时初始化
mapListTwo := map[string]int{
    "string":100,
    "":110,
    "go":120,
}
fmt.Println(mapListTwo)

获取元素

// 获取元素
str := mapList["a"]
fmt.Println(str,mapList[""],mapList["66"])
// 输出:5 4 0
// 当获取元素是map不存在拿到的就是value类型的默认值
// 声明时初始化
mapListTwo := map[string]string{
    "string":"100",
    "":"110",
    "go":"120",
}
mapListOne := map[string]int{
    "string":100,
    "":110,
    "go":120,
}
// 获取元素
str := mapListTwo["a"]
if str == "" {
    fmt.Println("str :",str )
}
stri := mapListOne["a"]
if stri == 0 {
    fmt.Println("stri :",stri )
}
// 输出:str : 
// 输出:stri : 0

判断元素是否存在map中

// 判断一个元素是否存在map中
func main()  {
	mapListOne := map[string]int{
		"string":100,
		"":110,
		"go":120,
	}
	// 判断一个元素是否存在map中
	value,ok := mapListOne["string"]
	if ok == true {
		fmt.Println("string : ",value,ok)
	}
	values,oks := mapListOne["java"]
	if oks {
		fmt.Println("java is ture: ",values,oks)
	} else {
		fmt.Println("java is false: ",values,oks)
	}
}
// 输出:
// string is true:  100 true
// java is false:  0 false

遍历map中的所有元素:for range (使用时不能保证每次执行程序获取的元素顺序都相同)

func main()  {
    // 声明&初始化 mapList
	var mapList map[string]int
	mapList = make(map[string]int)
	mapList["string"] = 100
	mapList["java"] = 200
	mapList["go"] = 300
	// 声明初始化 simpleMap
	simpleMap := map[string]string{
		"JSON":"JSON",
		"java":"java",
	}
    // 遍历 map   (key,value,ok|遍历和判断是否存在元素) 
	for key,value := range simpleMap {
		fmt.Printf("simpleMap[%s] = %s \n",key,value)
	}
	for key,value := range mapList {
		fmt.Printf("mapList[%s] = %d \n",key,value)
	}
}
// 输出两次执行结果:
// simpleMap[JSON] = JSON 		simpleMap[JSON] = JSON
// simpleMap[java] = java 		simpleMap[java] = java 
// mapList[string] = 100 		mapList[java] = 200 
// mapList[java] = 200 			mapList[go] = 300
// mapList[go] = 300 			mapList[string] = 100 

删除map中的元素

func main()  {
	//删除map中的元素
	mapList := map[string]int{
		"string":1000,
		"go":2000,
		"map":3000,
	}
	fmt.Println("mapList all ",mapList," length is ",len(mapList))
	delete(mapList,"map")
	fmt.Println("mapList deletion all ",mapList,"length is ",len(mapList))
}
// 输出:
// mapList all  map[go:2000 map:3000 string:1000]  length is  3
// mapList deletion all  map[go:2000 string:1000] length is  2

map 是引用类型,对map元素的改变即在改变这个map,且这个修改是显性的。
map 类型之间不能使用 ==符判断,==是能用来判断该map是否初始化为nil
map声明后必须要初始化才可以使用。
key必须是支持==或!=比较运算的类型(其类型的默认值也可以当作一个key),不可以是函数、map或slice。
使用for range 遍历时是无序的

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:51:23  更:2022-01-11 23:52:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:38:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码