【发布时间】:2013-11-02 10:56:44
【问题描述】:
Go 有非常简洁的多返回值范例。但看起来v, ok := map[key] 和v, k := range m 使用不同的机制和相同的符号。这是一个简单的例子:
func f2() (k, v string) {
return "Hello", "World"
}
func main(){
k := f2() // Doesn't work : multiple-value f2() in single-value context
m := map[string]int{"One": 1}
// It works
v, ok := m["One"]
// How it all work?
v := m["One"]
for k := range m {}
}
在上面的示例中,k := f2() 给出错误,因为f2 返回两个值,而 v, ok := m["One"] 和 v := m["One"] - 两个表达式都可以正常工作。
为什么会有不同的行为?
【问题讨论】:
标签: dictionary go range