【问题标题】:missing go type for returned values [closed]返回值缺少go类型[关闭]
【发布时间】:2021-09-28 12:36:18
【问题描述】:

为什么下面的代码没有发出警告?

$ cat ret.go
package main
import "fmt"
func foobar(x int, y int) (z, w int) {
    if x+y > 100 {
         _,w = 3,5
    } else {
        _,w = "MMM",9
    }
    return z,w
}

func main() {
    var x int
    _,x = foobar(42,13)
    fmt.Println(x)
}
$ go build -gcflags=-l ret.go

至少,go 编译器应该知道z 的大小吧?

【问题讨论】:

标签: go types return-value auto


【解决方案1】:

在 golang 中,您可以在一行中定义多个变量,如下所示:

var identifier1, identifier2 type

所以,这里的z, w 都声明为int

补充,见this

函数的返回值可以在Golang中命名

那么,如果你不给z赋值,它就会有一个默认值int,即0。所以,没有警告,代码没问题。

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2011-12-30
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多