如何在golang内部完成映射?

时间:2016-06-30 12:06:18

标签: go

以下是具体示例

func main(){    
m := make(map[string]int)  
m["k1"] = 7  

_, prs := m["k2"]   
fmt.Println(prs)  
}

"_"在这里表示什么?
休息很清楚。

2 个答案:

答案 0 :(得分:0)

dokumentation。你的陈述:

_, prs := m["k2"]

同时做两件事。 A)检查地图中是否存在键/值,B)是否检索该值。 “prs”是一个布尔值,表示该值是否存在于键“k2”中。

因此,如果想要检查地图中是否存在键/值并且不关心使用该值,则可以使用“_”忽略该值并且仅使用“prs”布尔值。

答案 1 :(得分:0)

_表示您不关心此特定返回值。

访问地图索引会产生2个值:

  • 该索引的值,或值类型的零值
  • 一个布尔值,指示值是否在该索引处

在您的情况下,prs将是布尔值。

此模式通常使用如下:

if _, found := m[key]; !found {
    // Do something here to handle the fact that there is nothing at the index `key`
}

地图是Go中的特殊类型,第二个值是可选的,因此如果您不关心地图中是否有某些内容,则无需检查它。