英文:
missing go type for returned values
问题
为什么对于以下代码没有发出警告?
$ 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
的大小,对吗?
英文:
How come no warnings are issued for the following code?
$ 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
For the least, the go compiler should know the size of z
right?
答案1
得分: 2
在Go语言中,你可以像下面这样在一行中定义多个变量:
var identifier1, identifier2 type
所以,在这里z
和w
都被声明为int
类型。
另外,参考这个链接:
在Go语言中,函数的返回值可以被命名
那么,如果你没有给z
赋值,它将具有int
类型的默认值,即0
。所以,没有警告,代码是正确的。
英文:
In golang, you can define multiple variable in one line like next:
var identifier1, identifier2 type
So, z, w
here both declared as int
.
Additional, see this:
> The return values of a function can be named in Golang
Then, if you not assign a value to z
, it will has a default value of int
, that is 0
. So, no warning, the code is ok.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论