Golang:如何声明带有类型的返回变量?

huangapple go评论150阅读模式
英文:

Golang: How to declare returned variables WITH TYPE?

问题

在Go语言中,你可以使用短变量声明来声明函数的返回变量,并指定它们的类型。以下是你想要的代码示例:

var dat []byte
var err error
dat, err = ioutil.ReadFile("/tmp/dat")
check(err)
fmt.Print(string(dat))

这样你就可以在声明变量的同时指定它们的类型。希望这可以帮助到你!

英文:

In GO, how do I declare the returned variables of a function WITH TYPE ?

e.g. I have this code

dat, err := ioutil.ReadFile("/tmp/dat")
check(err)
fmt.Print(string(dat))

but what I want is this:

var dat []byte, err error := ioutil.ReadFile("/tmp/dat")
check(err)
fmt.Print(string(dat))

However, no matter how I try, I only get this output

> syntax error: unexpected comma, expecting semicolon or newline or }

I'm working without IDE, and as the number of variables increases, it's really idiotic to have to keep all the return values's types in short-term memory... let alone if somebody else has to read the code.

How can I declare the returned tuple WITH type ?

答案1

得分: 4

这是因为你在赋值时使用了:=,这是一种方便的语法用于声明和赋值。它使你不必提供类型,我猜编译器会根据右侧返回的内容/任何类型来推断类型。相反,你需要这样做:

var dat []byte
var err error

dat, err = ioutil.ReadFile("/tmp/dat")

但是很少有人这样做,因为dat, err := ioutil.ReadFile("/tmp/dat")是一种更简洁的语法。

英文:

That's because you're using := in your assignment there and that is a convenience syntax to declare and assign. It makes it so you don't have to provide the type, I assume the compiler just implies it by what is returned/whatever types come from the right hand side. Instead you need to do this;

var dat []byte
var err error

dat, err = ioutil.ReadFile("/tmp/dat")

But no one does this because dat, err := ioutil.ReadFile("/tmp/dat") is such a cleaner syntax.

huangapple
  • 本文由 发表于 2015年9月26日 00:16:39
  • 转载请务必保留本文链接:https://go.coder-hub.com/32786496.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定