Golang:为什么捕获某些函数返回值是可选的?

时间:2016-11-29 19:48:39

标签: go

为什么go有时允许你调用函数而不捕获两个返回值?如:

func TestGolang() {
    myMap := make(map[string]string)
    test := myMap["value"]
    // or
    test, success := myMap["value"]
}

在其他时候,如果您不想使用该值,则需要捕获所有返回结果并使用空白标识符?

test := os.Stat("test") // fails
test, _ := os.Stat("test") // only way to make it work

我认为golang不支持单个函数的不同方法签名。第一个例子是如何工作的?我可以实现自己的函数,可选择返回错误或状态标志,但如果未捕获第二个返回值,则不会出错吗?

1 个答案:

答案 0 :(得分:7)

事实上,golang不支持函数重载,因此您无法为函数定义不同的签名。但是语言定义中的一些操作(例如频道接收器或从地图获取数据)是幸运的'与超载一样的行为。