我正在研究以下Go Lang Map数据结构。我对语法有点困惑-
//this is fine
countryCapitalMap = make(map[string]string)
/* insert key-value pairs in the map*/
countryCapitalMap["France"] = "Paris"
capital, ok := countryCapitalMap["United States"]
/* print map using keys*/
for country := range countryCapitalMap {
fmt.Println("Capital of", country, "is", countryCapitalMap[country])
}
countryCapitalMap [“ United States”]是否从下一行返回两个返回值
capital, ok := countryCapitalMap["United States"]
或countryCapitalMap [country]从以下行返回单个值
fmt.Println("Capital of", country, "is", countryCapitalMap[country])
我该如何解读这种语法?它是否基于与表达式一起使用的位置和哪个语句?
答案 0 :(得分:4)
我该如何解读这种语法?
阅读语法的定义。
形式的主表达式
a[x]
表示由x索引的地图元素。值x称为索引或映射键。
地图上有一种特殊形式的索引表达式。
v, ok = a[x]
v, ok := a[x]
var v, ok = a[x]
产生一个附加的无类型布尔值。如果键x存在于地图中,则ok的值为true,否则为false。
The Go Programming Language Specification
形式的主表达式
a[x]
表示数组的元素,指向数组,切片,字符串或 映射由x索引的索引。值x称为索引或映射键, 分别。
对于地图类型为M的
x的类型必须可分配给M的键类型
如果地图包含具有键x的条目,则a [x]是具有键x的地图元素,而a [x]的类型为M的元素类型。
如果映射为nil或不包含此类条目,则a [x]是元素M的零值
否则a [x]是非法的。
在分配中使用的类型为map [K] V的map a上的索引表达式 或特殊形式的初始化
v, ok = a[x] v, ok := a[x] var v, ok = a[x]
产生一个附加的无类型布尔值。如果ok的值为true 键x存在于地图中,否则为false。