Go语言之Map的使用(十五)_Clearlast .的博客-CSDN博客


本站和网页 https://blog.csdn.net/qq_44785877/article/details/109333225 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Go语言之Map的使用(十五)_Clearlast .的博客-CSDN博客
Go语言之Map的使用(十五)
Clearlast .
于 2020-10-28 15:37:14 发布
98
收藏
分类专栏:
Go语言
文章标签:
go语言
go
编程语言
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44785877/article/details/109333225
版权
Go语言
专栏收录该内容
17 篇文章
2 订阅
订阅专栏
Go语言_Map集合
1.什么是Map
Map是Go的内置类型,它使用键值对的方式来检索值(一个键对应一个值)
Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用hash 表来实现的,也是引用类型
2.Map如何使用?
1.使用make()创建Map
可以使用内建函数 make 也可以使用 map 关键字来定义 Map:
/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type
/* 使用 make 函数 */
map_variable = make(map[key_data_type]value_data_type)
rating := map[string]float32 {"C":5, "Go":4.5, "Python":4.5, "C++":2 }
如果不初始化 map,那么就会创建一个 nil map。 nil map 不能用来存放键值对
package main
import "fmt"
func main() {
var countryCapitalMap map[string]string
/* 创建集合 */
countryCapitalMap = make(map[string]string)
/* map 插入 key-value 对,各个国家对应的首都 */
countryCapitalMap["France"] = "Paris"
countryCapitalMap["Italy"] = "Rome"
countryCapitalMap["Japan"] = "Tokyo"
countryCapitalMap["India"] = "New Delhi"
/* 使用 key 输出 map 值 */
for country := range countryCapitalMap {
fmt.Println("Capital of",country,"is",countryCapitalMap[country])
/* 查看元素在集合中是否存在 */
captial, ok := countryCapitalMap["United States"]
/* 如果 ok 是 true, 则存在,否则不存在 */
if(ok){
fmt.Println("Capital of United States is", captial)
}else {
fmt.Println("Capital of United States is not present")
运行结果:
Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
Capital of United States is not present
2.delete()函数
delete(map, key) 函数用于删除集合的元素, 参数为 map 和其对应的 key。删除函数不返回任何值。
示例代码:
package main
import "fmt"
func main() {
/* 创建 map */
countryCapitalMap := map[string] string {"France":"Paris","Italy":"Rome","Japan":"Tokyo","India":"New Delhi"}
fmt.Println("原始 map")
/* 打印 map */
for country := range countryCapitalMap {
fmt.Println("Capital of",country,"is",countryCapitalMap[country])
/* 删除元素 */
delete(countryCapitalMap,"France");
fmt.Println("Entry for France is deleted")
fmt.Println("删除元素后 map")
/* 打印 map */
for country := range countryCapitalMap {
fmt.Println("Capital of",country,"is",countryCapitalMap[country])
运行结果:
原始 map
Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
Entry for France is deleted
删除元素后 map
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
3.ok-idiom
我们可以通过key获取map中对应的value值。语法为:
map[key]
但是当key如果不存在的时候,我们会得到该value值类型的默认值,比如string类型得到空字符串,int类型得到0。但是程序不会报错。所以我们可以使用ok-idiom获取值,可知道key/value是否存在
value, ok := map[key]
示例代码:
package main
import (
"fmt"
func main() {
m := make(map[string]int)
m["a"] = 1
x, ok := m["b"]
fmt.Println(x, ok)
x, ok = m["a"]
fmt.Println(x, ok)
运行结果:
0 false
1 true
4.map的长度
使用len函数可以确定map的长度。
len(map) // 可以得到map的长度
5.map是引用类型的
与切片相似,映射是引用类型。
当将映射分配给一个新变量时,它们都指向相同的内部数据结构。因此,一个的变化会反映另一个。
示例代码:
package main
import (
"fmt"
func main() {
personSalary := map[string]int{
"steve": 12000,
"jamie": 15000,
personSalary["mike"] = 9000
fmt.Println("Original person salary", personSalary)
newPersonSalary := personSalary
newPersonSalary["mike"] = 18000
fmt.Println("Person salary changed", personSalary)
运行结果:
Original person salary map[steve:12000 jamie:15000 mike:9000]
Person salary changed map[steve:12000 jamie:15000 mike:18000]
map不能使用==操作符进行比较。==只能用来检查map是否为空。 否则会报错:invalid operation: map1 == map2 (map can only be comparedto nil)
Clearlast .
关注
关注
点赞
收藏
觉得还不错?
一键收藏
打赏
知道了
评论
Go语言之Map的使用(十五)
Go语言_Map集合1.什么是MapMap是Go的内置类型,它使用键值对的方式来检索值(一个键对应一个值)Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用hash 表来实现的,也是引用类型2.Map如何使用?1.使用make()创建Map可以使用内建函数 make 也可以使用 map 关
复制链接
扫一扫
专栏目录
Go语言用map实现堆栈功能的方法
12-31
本文实例讲述了Go语言用map实现堆栈功能的方法。分享给大家供大家参考。具体实现方法如下:
代码如下:package stack
import (
“strconv”
type Stack struct {
quenu map[int]int
func New() *Stack{
s := new(Stack)
s.quenu = make(map[int]int)
return s
func (s *Stack) Push(i int) {
s.quenu[len(s.quenu)] = i
func (s *Stack) P
ch16、面向对象编程-Go语言的相关接口
return的博客
07-28
89
Go语言的相关接口
参与评论
您还未登录,请先
登录
后发表或查看评论
go初学篇(四)之Map
hightower的博客
03-18
849
前言:
上一篇着重说了数组与切片,这一篇我们就来说说说Map映射,对于Map很多语言都有,它是将值与键关联起来的集合,一般都是用相应的键去检索值,虽然我们可以和数组和切片一样去迭代它,但是它迭代返回的结果是无序的,因为Map是通过hash表来实现的,所以使用Map需要注意以下几点:
map是无序的,每次打印的结果都不一样,只能通过键key获取
map的长度不是确定的,也是一种引用类型
map同样使用len函数,可以返回其中key的数量
map的key可以是所有可以比较的类型,布尔型,整形都可以
Go 语言概述 (下)
风格色的博客
04-27
306
Go 语言概述 (下)
函数
定义函数
main.go
package main
import (
"fmt"
func main() {
fmt.Println(add(1, 2))
func add(a int, b int) (int) {
return a + b
注: 前几个函数参数的类型可以省略, 最后一个不行. fun
【Go语言小知识】len与map的键值对数量
gopet
12-10
376
内置函数 len() 可以查询map的长度,该长度值是map中存储的键值对的数量。
go语言学习之数组、map
lzh
07-01
4858
任何语言都提供了数组这一特殊的存储结构,各有各的好处。go语言的数组和常规编程语言的数组差不多,只不过它还提供了一个称之为切片的容器(你可以把它理解为可变长的数组),切片的定义方法为:slice []int,仔细看跟数组定义的方式一样,只不过是它没有确定的大小,go语言中称这种变量为切片。切片我们需要了解三个东西:prt是一个指针,存储当前对切片操作的最后一次位置或者当前位置,len是切片的长度,...
golang中的map
m0_51530927的博客
04-15
1121
golang中map的声明定义,添加、删除、修改、遍历以及传递方法介绍ok-idiom
Go语言map(Go语言映射)
01-20
Go语言map(Go语言映射) map 这种数据结构在其他编程语言中也称为字典(Python)、hash 和 HashTable 等。 map 概念 map 是引用类型,可以使用如下方式声明: var mapname map[keytype]valuetype 在声明的时候不...
Go语言map用法实例分析
12-25
本文实例讲述了Go语言map用法。分享给大家供大家参考。具体分析如下: map 映射键到值: map 在使用之前必须用 make 来创建(不是 new);一个值为 nil 的 map 是空的,并且不能赋值。 代码如下:package main ...
GO语言映射(Map)用法分析
12-26
本文实例讲述了GO语言映射(Map)用法。分享给大家供大家参考。具体如下: 映射是一种内置的数据结构,用来保存键值对的无序集合。 (1)映射的创建 make ( map [KeyType] ValueType, initialCapacity ) make ( map ...
Go 语言 map的使用
01-20
Go 语言 map的使用 一、map 基本介绍: map 是 key-value 数据结构,又称为字段或者关联数组。(类似Python中的字典) 基本语法: var map 变量名 map[keyType]valueType 通常key的类型为:int,string,也可以为bool...
Go语言map字典用法实例分析
01-01
本文实例讲述了Go语言map字典用法。分享给大家供大家参考。具体分析如下: 这段代码生成了青岛、济南、烟台三个城市拼音和汉字的对照字典,根据拼音可以输出汉字 代码如下:package main import “fmt” func main()...
go语言map字典删除操作的方法
01-20
本文实例讲述了go语言map字典删除操作的方法。分享给大家供大家参考。具体分析如下: 这里先构造了一点map,添加了青岛、济南、烟台三地的拼音和汉字字典,然后删除青岛,最后查看青岛是否还存在 代码如下:package ...
详解 Go 语言中 Map 类型和 Slice 类型的传递
01-21
Map 类型 先看例子 m1: func main() { m := make(map[int]int) mdMap(m) fmt.Println(m) } func mdMap(m map[int]int) { m[1] = 100 m[2] = 200 } 结果是 map[2:200 1:100] 我们再修改如下 m2: func main()...
深度解密 Go 语言中的 sync.map
09-16
主要介绍了深度解密 Go 语言中的 sync.map,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
golang学习笔记010--map
逆天的博客
01-27
350
目录1.基本介绍2.map的使用方式一:先定义,再make,再赋值方式二:定义直接make,再赋值方式三:直接赋值举例:3.map的增删改查4.map的长度len5.map切片6.map排序7.map使用细节
1.基本介绍
● map是key-value 数据结构,类似其它编程语言的集合
● 基本语法: var map 变量名 map[keytype]valuetype
○ key可以是很多种类型
■ 比如bool,数字,string,指针,channel,还可以是接口,结构体,数组.通常为in
go语言中map的使用
AndrewYZWang的博客
10-24
905
一、集合(Map)
1.1 什么是Map
map是Go中的内置类型,它将一个值与一个键关联起来。可以使用相应的键检索值。
Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的,也是引用类型
使用map过程中需要注意的几点:
map是无序的,每次打印出来的map都会不一样,它不能通过in
Golang 语言map底层实现原理解析
01-19
在开发过程中,map是必不可少的数据结构,在Golang中,使用map或多或少会遇到与其他语言不一样的体验,比如访问不存在的元素会返回其类型的空值、map的大小究竟是多少,为什么会报”cannot take the address of”...
go语言结构体转换map、map转换结构体、json字符串转结构体、结构体数据转换到别的结构体
01-07
1.结构体转map 2.map转结构体 3.结构体数据转移到结构体 4.json字符串转结构体 package main import ( encoding/json fmt reflect ) type User struct { Name string `json:name` Age int `json:age` } func ...
go语言 如何给map切片赋值
最新发布
03-22
可以使用以下代码给map切片赋值:
```go
m := make(map[string][]int)
m["key"] = []int{1, 2, 3}
```
其中,`make`函数用于创建一个空的map,`[]int`表示切片类型,`{1, 2, 3}`表示切片的值。通过将切片赋值给map的键,可以将切片存储在map中。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
Clearlast .
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
178
原创
23万+
周排名
28万+
总排名
17万+
访问
等级
2390
积分
42
粉丝
159
获赞
81
评论
348
收藏
私信
关注
热门文章
IDEA如何将代码进行上下左右移动,改变位置。
14447
为什么说交换机可以隔离冲突域?
11044
AE - Saber插件(简单使用方法)
10595
Chrome等浏览器下出现net::ERR_BLOCKED_BY_CLIENT的解决办法
9506
rpm -qa|grep xxx 命令详解
9242
分类专栏
Linux
1篇
Mybatis
8篇
笔记
1篇
Spring框架
19篇
JavaSE
32篇
Redis
1篇
小技巧
6篇
版本控制
6篇
Jquery
1篇
JavaWeb
19篇
项目
1篇
Web前端
6篇
Mybatis问题排错
maven
5篇
Java
18篇
IDEA
3篇
Go语言
17篇
Devops
1篇
Docker
1篇
Mysql
16篇
操作系统
6篇
AE软件
5篇
运维
6篇
最新评论
Chrome等浏览器下出现net::ERR_BLOCKED_BY_CLIENT的解决办法
胡亦.:
这个对项目和开发没有影响吧??
Chrome等浏览器下出现net::ERR_BLOCKED_BY_CLIENT的解决办法
猕猴桃千层糕:
赞啊,找了好久找不出问题,写一个广告的功能,死活走不到后台。
Mybatis接口式编程
2301_76390083:
小哥哥玩soul吗
Chrome等浏览器下出现net::ERR_BLOCKED_BY_CLIENT的解决办法
名字都被占了不知道取什么名字:
气死了
无法安装64位版本的office,因为在您的PC上找到以下32位程序
暴走少年:
如果删除错误,记得右击,权限,允许。每一个都要允许才可以删除。
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
SQL.2 (如何查找第N高的数据?)
SQL.1
Mysql防止删库跑路技巧
2021年124篇
2020年72篇
目录
目录
分类专栏
Linux
1篇
Mybatis
8篇
笔记
1篇
Spring框架
19篇
JavaSE
32篇
Redis
1篇
小技巧
6篇
版本控制
6篇
Jquery
1篇
JavaWeb
19篇
项目
1篇
Web前端
6篇
Mybatis问题排错
maven
5篇
Java
18篇
IDEA
3篇
Go语言
17篇
Devops
1篇
Docker
1篇
Mysql
16篇
操作系统
6篇
AE软件
5篇
运维
6篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
Clearlast .
喜欢的话,可以请博主杯咖啡呦☺
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值