我正在解决代码战争中的 katas 问题,并偶然发现了一种检查映射是否具有与给定键关联的值的方法。下面的代码是我自己的虚拟示例,如果函数参数等于 10,则返回(以非常低效的方式)“bar”字符串。
我很难理解if这里的声明是如何运作的。
func Bar(x int) string {
var m = make(map[string]int)
if x == 10 {
m["bar"] = x
}
if _, ok := m["bar"]; ok {
return "bar"
}
return "foo"
}
如果我的if声明看起来像这样(删除_)
if ok := m["bar"];ok {
代码无法运行,但我不知道为什么。我不知道这种模式是否合适以及其背后的机制。目前它看起来像是一个肮脏的把戏,因为if它只计算布尔表达式。所以我的理论是,不知_何故,if声明认为它有一个布尔条件,但如果有人引导我走向正确的方向,我将非常感激
撒科打诨
相关分类