Map类型
在C++/Java中,map一般都以库的方式提供,比如在C++中是STL的std::map<>,在C#中是Dictionary<>,在Java中是Hashmap<>,在这些语言中,如果要使用map,事先要引用相应的库。而在Go中,使用map不需要引入任何库,并且用起来也更加方便。
1.变量声明
map的声明基本上没有多余的元素,比如:
var myMap[String] int
其中,myMap是声明的map的变量名,String是键key的类型,int是value所放的值的类型。
2.创建
我们可以使用Go语言内置的函数make()来创建一个新map。下面的这个例子创建了一个键类型为string、值类型为int的map:
myMap = make(map[String] int)
//创建了一个初始存储能力为100的map:
myMap = make(map[String] int,100)
复杂一点的代码:
// PersonInfo是一个包含个人详细信息的类型
type PersonInfo struct {
ID string
Name string
Address string
}
myMap = map[string] PersonInfo{
"1234": PersonInfo{"1", "Jack", "Room 101,..."},
}//"1234"是键值
3.元素赋值
同C++一样,键和值对应即可:
myMap["1234"] = PersonInfo{"1","Jack","Room 101"...}
4.元素删除
Go语言提供了一个内置函数delete(),用于删除容器内的元素。下面我们简单介绍一下如何用delete()函数删除map内的元素:
delete(myMap, "1234")
上面的代码将从myMap中删除键为“1234”的键值对。如果“1234”这个键不存在,那么这个调用将什么都不发生,也不会有什么副作用。但是如果传入的map变量的值是nil(表示空,与null还是有很大不同的),该调用将导致程序抛出异常(panic)
5.元素查找
在Go语言中,要从map中查找一个特定的键,可以通过下面的代码来实现:
value, ok := myMap["1234"]
if ok { // 找到了
// 处理找到的value
}
判断是否成功找到特定的键,不需要检查取到的值是否为nil,只需查看第二个返回值ok,这让表意清晰很多。