error 类型

<font style="color:rgb(53, 53, 53);">error</font>类型其实是一个接口类型,也是一个 <font style="color:rgb(53, 53, 53);">Go</font> 语言的内建类型。在这个接口类型的声明中只包含了一个方法Error。这个方法不接受任何参数,但是会返回一个string类型的结果。

它的作用是返回错误信息的字符串表示形式。我们使用error类型的方式通常是,在函数声明的结果列表的最后,声明一个该类型的结果,同时在调用这个函数之后,先判断它返回的最后一个结果值是否“不为nil”。
  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. )
  6. func echo(request string) (response string, err error) {
  7. if request == "" {
  8. err = errors.New("empty request")
  9. //结果response的值也会是一个空字符串
  10. return
  11. }
  12. response = fmt.Sprintf("echo: %s", request)
  13. //此时的结果err的值会是nil
  14. return
  15. }
  16. func main() {
  17. for _, req := range []string{"", "hello!"} {
  18. fmt.Printf("request: %s\n", req)
  19. resp, err := echo(req)
  20. if err != nil {
  21. fmt.Printf("error: %s\n", err)
  22. continue
  23. }
  24. fmt.Printf("response: %s\n", resp)
  25. }
  26. }

这里和之前java里面不太一样

  1. err = xxx
  2. return

感觉等价于下面的写法,只不过下面的res为nil

  1. err =xxx
  2. return res, err

怎样根据实际情况给予恰当的错误值?