价值

问题描述:

当您打印2个返回值的函数的结果,你会得到价值

valA valB 

从地图检索可以返回1倍的值或者两个值:

v := m["Answer"] 
v, ok := m["Answer"] 

但是,当您打印m["Answer"]时,您将始终只打印v。什么是地图检索的“函数签名”?或者这只是一个特例?下面是一个显示区别的示例:

package main 

import "fmt" 

func main() { 
    m := make(map[string]int) 
    m["Answer"] = 42 

    v, ok := m["Answer"] 
    fmt.Println("The value:", v, "Present:", ok) 

    fmt.Println(banana()) 
    fmt.Println(m["Answer"]) 
} 

func banana() (int, int) { 
    return 1, 2 
} 
+3

这是当有在LHS两个变量的特殊任务情况和RHS上的地图索引。您无法让地图索引索引运算符以任何其他方式返回两个值。 –

特殊情况。这同样适用于其他操作,其中包括:

读取从chan

v, ok := <- somechannel 

铸件,如:

casted, ok := somevar.(sometype) 
+3

另外,范围循环对于i:=范围x'和'对于i,v:=范围x' – Kaedys