Golang:如何声明返回的变量WITH TYPE?

Golang:如何声明返回的变量WITH TYPE?

问题描述:

在GO中,如何声明函数WITH TYPE的返回变量?Golang:如何声明返回的变量WITH TYPE?

例如我有这样的代码

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

但我想是这样的:

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

但是,不管我如何努力,我只得到这个输出

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

我的工作无IDE,随着变量数量的增加,将所有返回值的类型保存在短期记忆中是非常愚蠢的......更别提其他人必须阅读代码了。

如何声明返回的元组WITH类型?

这是因为您在您的作业中使用:=,这是一种便捷的语句来声明和分配。它使得它不必提供类型,我假设编译器只是通过返回的内容暗示它/无论哪种类型来自右侧。相反,你需要这样做;

​​

但是没有人这样做,因为dat, err := ioutil.ReadFile("/tmp/dat")就是这样一个更清晰的语法。

+0

这的确解释了为什么没有人这样做。但是,清理器语法会声明类型。这只是简短的语法,通过隐藏相关的非冗余信息来实现它的目标,这与IMHO不一样。 –

+0

@StefanSteiger是的,这是真的。最后的评论完全是主观的。这是Go中最常见的事情。我同意这可能很烦人,因为您必须查看文档/执行以查看正在分配哪些类型。我更喜欢略微冗长的语法,尽管我不知道它是否适用于Go的多种返回类型。在C#中,我强烈反对用'var'声明而不是在LHS中提供类型。 – evanmcdonnal

+1

对C#来说是如此。例如,在codereview中,当你有IDatareader something = GetSomething()时你会立即看到,但是当你只有var something = GetSomething()时,你永远不会注意到它没有配置或使用。 –