在Go中,任何可以将自身描述为字符串的值均表示错误。任何实现内置error接口的类型都是错误。
// 错误界面由单个表示 // Error()方法,返回错误的字符串表示形式 type error interface { Error() string }
下面的示例演示如何使用字符串复合文字来定义新的错误类型。
// 将AuthorizationError定义为复合文字 type AuthorizationError string // 实现错误界面 // 在这种情况下,我只返回基础字符串 func (e AuthorizationError) Error() string { return string(e) }
我现在可以将自定义错误类型用作错误:
package main import ( "fmt" ) // 将AuthorizationError定义为复合文字 type AuthorizationError string // 实现错误界面 // 在这种情况下,我只返回基础字符串 func (e AuthorizationError) Error() string { return string(e) } func main() { fmt.Println(DoSomething(1)) //成功!返回nil fmt.Println(DoSomething(2)) // 返回错误信息 } func DoSomething(someID int) error { if someID != 1 { return AuthorizationError("不允许采取行动!") } // 在这里做点什么 // 如果执行成功,则返回nil错误 return nil }