是否所有Golang函数都将err作为第二个返回值返回

时间:2019-04-02 09:12:05

标签: go

我是新来的Golang程序员,而且我看到代码段很多时候函数返回err作为最后一个参数。

f, err := strconv.ParseFloat(asciiFloat, 64)

即使函数实现中没有错误处理,也必须使所有函数都返回err。 以及我怎么知道一个函数是否正在返回err值?

每次需要使用函数时,我都必须签出文档吗?

2 个答案:

答案 0 :(得分:3)

回答您的问题: 幸运的是,Go可以防止某些类型的程序员错误。如果您忘记了函数返回的值之一,就不会编译程序。

在Go语言中返回错误是一种好习惯,请阅读Effective Go

错误部分
  

库例程必须经常向调用者返回某种错误指示。如前所述,Go的多值返回使返回正常的返回值以及详细的错误描述变得容易。使用此功能提供详细的错误信息是一种很好的方式。

Error handling and Go

  

在Go中,错误处理很重要。该语言的设计和约定鼓励您明确检查错误发生的位置

但是,here中描述了一个问题,在Go 2中可能会得到解决

  

通常,Go程序的代码检查错误太多,而处理它们的代码不足。

戴夫·切尼(Dave Cheney)用the blog写信

  

我建议您更改代码,以免出现太多错误要处理。

答案 1 :(得分:2)

  

必须使所有函数都返回err

不。
但是如果您的函数可能返回错误-您必须将此错误作为最后一个值返回。
最好将错误返回为最后一个值。

  

我怎么知道一个函数是否正在返回err

在使用某些函数之前,您必须先看到该函数,然后在声明中看到返回的函数。阅读功能文档并了解如何使用功能也是很好的选择。