今天是golang特辑的第7篇文章,我们来谈谈map在golang中的使用方法吧。

map这种数据结构很常用,它包含密钥-值对。 在C /java中叫做地图,在Python中叫做光盘。 这些数据结构的名称不一样,但背后的技术支持也不一定一样。 例如,c的map由红色和黑色的树实现,而Java的hashmap则通过hash表实现。 但是,使用方法几乎一样。 除了Java通过get方法获取键值之外,c、Python和golang都是用方括号获取的。

声明与初始化

golang的map声明非常简单。 用map关键字声明map,在方括号内填入key的类型,在方括号外填入value的类型。

var m地图字符串整数

这样我们就宣布了map。

但是,请注意,这样声明的是空的map,map的零值为nil,可以理解为空的指针。 所以我们不能直接操作这个m。 不这样做的话,就会得到panic。

panic :分配种子地图

panic表示golang中一个非常严重的不可恢复的错误。 可恢复的错误类似于Java和其他语言的异常。 发生异常时,选择handle,程序可以不崩溃地继续执行。 那些非常严重,无法处理的异常在golang中被称为panic。

golang的异常处理机制与其他语言有很大不同,整体逻辑和内核不太一样。 当然这是个比较大的话题,所以在这里简单地理解为error就可以了。

返回到map,我们声明map后,要使用它就需要初始化。 使用make方法创建实例的方法也很简单。 这与以前在make中创建元组很相似。

m=make (地图字符串整数) )。

//也可以指定创建的map的存储能力的大小

m=make (地图字符串整数,100 ) )。

宣言的时候也可以写初始化:

varm=map int ' ABC ' :3,' ccd': 4}

当然,也可以使用赋值运算符直接从make中导出空的map。

m :=make (地图字符串整数)

增删改查

map做好后当然要用,但整体上和Python的dict很像,简单直观,不怎么绕圈子。 让我们逐一看看。 首先是map的添加元素。 map的追加要素用方括号直接代入即可:

m“亚太”=4

同样,需要保证这里的m已经初始化。 否则,nil的panic也会打包。 如果map中已经存在key的值,则会自动替换原始key。 也就是说,map的更新和元素的添加都是一样的,都是用这个方法进行的。 如果不存在就添加,否则更新。

删除元素也很容易,和Python类似。 用delete关键字删除。

删除(米,' abc ' ) ) ) ) ) ) ) )。

我们删除key时,如果是其他语言,就需要判断该key值是否存在。 否则无法删除,或者有可能引起异常。 在golang不是这样。 我对这个进行了优化。 如果要删除的密钥的值原本不在map中,则在调用delete后不会发生任何事情。 只有一个,必须保证传入的map不是nil。 否则,也会发生panic。

最后,让我们来看看元素的搜索。 在Java和Python中,Java通过容器密钥、Python通过in操作员等几个判断语句进行判断。 golang直接用方括号询问,但存在如果没有key怎么办的问题。

在其他语言中,直接访问不存在的key时会引发异常,但由于会返回其他bool类型的元素以指示是否找到元素,因此golang不会触发panic。 因此,可以同时用两个变量接收。 如果第二个变量为True,则表示搜索成功。

此外,还可以将此逻辑与if初始化操作结合起来。

if val,ok :=米[ ' 1234 ' ]; 好的

FMT.println(val ) )。

}

这里的ok表示搜索是否成功。 这在golang中也是map检索的惯用表达。

最后,让我们来看看实际使用map的例子。 map将为统计字符串中的单词数生成wordCount。

打包主

import (

' golang.org/x /托尔/WC '

' strings '

funcwordcount(sstring )地图[字符串]整数

CNT :=make (地图字符串整数) )

//用分割方法分割字符串

for _,str :=范围字符串.分割(s

//直接就可以了。 golang自动填充

中央电视台

}

返回中央电视台

}

功能主()

WC .测试(世界计数) )。

(}

总结

到此为止,我已经介绍了在golang上使用地图的情况。 可以看出,map一如既往地体现了golang语法简化的特点。 例如,如果在返回错误的操作中省略了判断要素是否在map中的操作,一开始我觉得有点不习惯,但是接触多了就会发现这些都有出路。 golang的道路很简单,可以节约,简单不复杂。

这不仅是map,其他特性也一样。 在那之后的内容中,我们会继续感受那个。

如果你喜欢正文,可以的话,请跟进,稍微鼓励一下。 也便于获取更多的文章。