golang中的error接口对于程序的简化和判断有比较好帮助,采用 func xxx( yyyy ) (zzzz, err error) 的方式利于错误传递,结合我们自定义的错误,可以达到灵活应用的效果。
[source lang=”c”]
package main
import (
"fmt"
"encoding/json"
)
type MyError struct{
Code int
StrErr string
}
func (this *MyError) Error() string {
return this.StrErr
}
func MyFunc() (err error) {
err = &MyError{0, "success"}
return
}
func main(){
if err := MyFunc(); err != nil {
fmt.Println(err)
fmt.Printf("code %d, str %s\n",
err.(*MyError).Code,
err.(*MyError).StrErr)
data, _ := json.Marshal(err)
fmt.Println(string(data))
}
}
[/source]