Il existe deux façons de définir des exceptions d'erreur dans go, mais les deux nécessitent que votre valeur de retour soit de type error.
func Control() error { //xxxx }
La première méthode consiste à utiliser les erreurs du package de bibliothèque standard Golang pour définir les erreurs. L'utilisation est très simple, il suffit de renvoyer error.New("string") . Il s’agit du retour d’erreur le plus simple.
La deuxième façon consiste à emprunter la structure struct et à créer une méthode Error() de la struct. Notez que le nom de la méthode est Error, sinon le bug suivant se produira et la méthode Error sera introuvable.
./er.go:25: cannot use equalError literal (type equalError) as type error in return argument: equalError does not implement error (missing Error method)
Ce qui suit est une méthode relativement complète d'utilisation d'Erreur. Non seulement les erreurs, mais aussi la méthode struct Error()
#http://xiaorui.cc package main import ( "errors" "fmt" ) type equalError struct { Num int } //方法名字是Error() func (e equalError) Error() string { return fmt.Sprintf("你现在是数字是 %d ,还是超了55", e.Num) } func Equal(n int) (int, error) { if n > 55 { return -1, errors.New("超过了55") //生成一个简单的 error 类型 } return n, nil } func DiyEqual(n int) (int, error) { if n > 55 { return -1, equalError{Num: n} // 会调用equalError的Error方法 } return n, nil } func main() { //使用errors.New生成error对象 if result, err := Equal(100); err != nil { fmt.Println("错误:", err) } else { fmt.Println("结果:", result) } //不适用erros,自定义错误方式. if result, err := DiyEqual(100); err != nil { fmt.Println("错误:", err) } else { fmt.Println("结果:", result) } }
Recommandations associées : tutoriel golang
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!