2018年淘宝客网站怎么做,wordpress仿站函数,在网上帮做图片的网站,wordpress 解密成md5GO系列
1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 文章目录 GO系列前言一、什么是Map二、Map的基本操作2.1 定义map2.2 添加和修改键值对2.3 删除键值对2.4 遍历键值对2.5 判断某个key是否存在 三、总结…GO系列
1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 文章目录 GO系列前言一、什么是Map二、Map的基本操作2.1 定义map2.2 添加和修改键值对2.3 删除键值对2.4 遍历键值对2.5 判断某个key是否存在 三、总结 前言
按照公司目前的任务go 学习是必经之路了虽然行业卷不过技多不压身依旧努力 前面学习了切片操作对切片有了基本的认识还有一些基础操作的认识发现还是和 JAVA 的 List操作有很大区别今天来认识一下Map以及如何操作的。
一、什么是Map 首先什么是 Map 呢就是一种无序的以 key-value 键值对方式存储的数据结构在 Go 语言中Map也一样类似于哈希或者字典是引用类型所以必须初始化才能使用适用于快速查找和存储键值对的场景。 Map 是一种引用类型需要 make() 函数来创建 这样来定义 map[键类型]值类型例如 map[string]int 表示键为字符串类型值为整数类型的 map。 创建一个空的 map: myMap : make(map[string]int)。使用 map 的名称来添加或修改对于的值myMap[“a”] “100”。使用 map 的名称来获取对应的值value : myMap[“a”]。使用 delete() 函数来删除 map 中的键值对 delete(myMap, “a”)。使用 “for range” 来循环遍历 map 中的键值对 for key, value : range myMap{}。使用 len() 函数获取 map 中键值对的数量 length : len(myMap)需要注意的是map 中键必须是支持相等操作的类型比如 整数、字符串、浮点数、指针、数组、结构体等而值可以是任何类型另外 map 是无须的结构遍历 map 的顺序是不确定的。 二、Map的基本操作
2.1 定义map 下面的示例中定义了一个 map 类型的变量 myMap从运行结果可以看出定义的 map 是空的。 可以在什么的时候指定容量这样就不会导致容量不够扩容而消耗性能了。 也可以在声明的时候初始化值有时候在开发中需要定义一个字段来使用。 package mainimport fmtfunc main() {// 定义一个空的mapemptyMap : make(map[string]int)// 可以指定map的容量,也可以不指定myMap : make(map[string]int, 8)// 往 myMap 中添加值myMap[a] 1myMap[b] 2myMap[c] 3fmt.Println(myMap)// 声明的时候添加元素dictMap : map[string]string{001: 男,002: 女,003: 未知,}fmt.Println(dictMap)
}运行结果
PS D:\workspaceGo go run map.go
map[]
map[a:1 b:2 c:3]
map[001:男 002:女 003:未知]2.2 添加和修改键值对
package mainimport fmtfunc main() {myMap : make(map[string]int)// 往 myMap 中添加值myMap[a] 1myMap[b] 2myMap[c] 3myMap[d] 4myMap[e] 5fmt.Println(修改后的map: , myMap)// 修改 map 中的值myMap[e] 500fmt.Println(修改后的map: , myMap)
}
运行结果
PS D:\workspaceGo go run map.go
修改后的map: map[a:1 b:2 c:3 d:4 e:5]
修改后的map: map[a:1 b:2 c:3 d:4 e:500]2.3 删除键值对
package mainimport fmtfunc main() {myMap : make(map[string]int)// 往 myMap 中添加值myMap[a] 1myMap[b] 2myMap[c] 3myMap[d] 4myMap[e] 5fmt.Println(删除后的map: , myMap)// 删除 map 中的值delete(myMap, a)delete(myMap, e)fmt.Println(删除后的map: , myMap)
}运行结果
PS D:\workspaceGo go run map.go
删除后的map: map[a:1 b:2 c:3 d:4 e:5]
删除后的map: map[b:2 c:3 d:4]2.4 遍历键值对
基本的遍历
package mainimport fmtfunc main() {myMap : make(map[string]int)// 往 myMap 中添加值myMap[a] 1myMap[b] 2myMap[c] 3myMap[d] 4myMap[e] 5length : len(myMap)fmt.Println(map的长度, length)// 遍历 mapfor key, value : range myMap {fmt.Println(key: , key, , value: , value)}
}运行结果
PS D:\workspaceGo go run map.go
map的长度 5
key: a , value: 1
key: b , value: 2
key: c , value: 3
key: d , value: 4
key: e , value: 5
PS D:\workspaceGo go run map.go
map的长度 5
key: e , value: 5
key: a , value: 1
key: b , value: 2
key: c , value: 3
key: d , value: 4注这里我执行了两次可以看出两次遍历打印出来的顺序都会不一样的所以 map 是无须的键值对数据结构。
忽略键或者值的写法 // 只需要值不需要 keyfor _, v : range myMap {fmt.Println(值为, v)}for k, _ : range myMap {fmt.Println(键为, k)}顺序遍历 map ...声明 myMap 代码省略同上//声明切片用来存放 kaykeys : []string{}for key : range myMap {keys append(keys, key)}//对切片进行排序sort.Strings(keys)//遍历切片来获取 map 元素for _, k : range keys {fmt.Println(k, myMap[k])}运行结果
a 1
b 2
c 3
d 4
e 52.5 判断某个key是否存在
package mainimport fmtfunc main() {myMap : make(map[string]int, 8)// 往 myMap 中添加值myMap[a] 1myMap[b] 2myMap[c] 3value, ok : myMap[d]if ok {fmt.Println(value)} else {fmt.Println(没有这个键)}v, exists : myMap[a]if exists {fmt.Println(a 的值为, v)} else {fmt.Println(没有a)}
}
运行结果
PS D:\workspaceGo go run map.go
没有这个键
a 的值为 1三、总结
其实 map 还是比较容易上手的初始化和操作都比较容易的。 我主张每篇博客都不要长篇大论这样有需要的人也能很容易检索到想要的结果自己在后面复习巩固的时候也不会看自己的博客疲劳。