Golang多重返回重载是否对地图类型是唯一的?

Her*_*ton 2 syntax overloading go

这两个都有效:

m := make(map[int]int)
elem, ok := m[1]
elem = m[1]
Run Code Online (Sandbox Code Playgroud)

然而,这不允许:

func overload() (int, int) {
    return 1, 1
}

func overload() int {
    return 1
}

func main() {
    x := overload()
    x, y := overload()
}
Run Code Online (Sandbox Code Playgroud)

另外,是否有一个没有概括的内置语法列表?我一直对什么是一个特殊的语法,即感到困惑map[string]int,make([]int, 10)什么是语言的一部分.

two*_*two 6

这是特殊的语法.除了映射键检查之外,至少类型断言通道接收具有单元素和双元素版本.在所有这些情况下,第二个元素是在doc示例中bool调用ok的; 对于类型断言,它表示断言是否成功,并且对于通道接收它,说明通信是否成功(false如果通道是关闭的并且是空的).

for...range有自己的,不同的单元素和双元素版本,但可能range更明显特别.

有一个内置函数列表.如果你真的想知道所有的角落情况,仔细阅读规范 - 这很短,不会陷入某些标准文档的细节中,并且一旦你使用了这种语言就值得花时间.(Effective GoFAQ也属于这一类.)