Go程序用error
表示错误状态。
error
类型是一个类似fmt.Stringer
的内置接口
type error interface {
Error() string
}
(与fmt.Stringer, fmt包在打印值错误的值时查找error
接口。)
函数通常返回一个error
,调用代码应该通过测试错误是否等于nil
来处理错误。
i, err := strconv.Atoi("42")
if err != nil {
fmt.Printf("couldn't convert number: %v\n", err)
return
}
fmt.Println("Converted integer:", i)
nil
错误表示成功;非nil
错误表示失败。
package main
import (
"fmt"
"time"
)
type MyError struct {
When time.Time
What string
}
func (e *MyError) Error() string {
return fmt.Sprintf("at %v, %s",
e.When, e.What)
}
func run() error {
return &MyError{
time.Now(),
"it didn't work",
}
}
func main() {
if err := run(); err != nil {
fmt.Println(err)
}
}