英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论