价值
问题描述:
当您打印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
}
答
特殊情况。这同样适用于其他操作,其中包括:
读取从chan
:
v, ok := <- somechannel
铸件,如:
casted, ok := somevar.(sometype)
+3
另外,范围循环对于i:=范围x'和'对于i,v:=范围x' – Kaedys
这是当有在LHS两个变量的特殊任务情况和RHS上的地图索引。您无法让地图索引索引运算符以任何其他方式返回两个值。 –