如何解释这种地图语法?

时间:2019-01-05 06:56:00

标签: go

我正在研究以下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])

我该如何解读这种语法?它是否基于与表达式一起使用的位置和哪个语句

1 个答案:

答案 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

     

Index expressions

     

形式的主表达式

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。