range 或 map 返回什么?

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"]- 两个表达式都没有任何错误。为什么会有不同的行为?


青春有我
浏览 250回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go