Pourquoi une interface renvoie-t-elle ""mauvaise erreur"" pour la méthode d'erreur d'un type personnalisé ?
Dans Go, une interface peut être utilisée pour définir des méthodes pour un type. Lorsqu'un objet implémente une interface, il fournit une implémentation pour chacune des méthodes définies par cette interface.
Considérons l'exemple suivant :
type T int func (t T) Error() string { return "bad error" } func main() { var v interface{} = T(5) fmt.Println(v) // Output: "bad error" }
Dans cet exemple, la méthode Error est définie pour le type T. Cependant, lorsque la valeur v est imprimée à l'aide de fmt.Println, le résultat est "mauvaise erreur" au lieu de la valeur entière attendue 5. Pour comprendre ce comportement, référons-nous au Documentation du package fmt :
Dans ce cas, la fonction fmt.Println est utilisée, ce qui équivaut à fmt.Printf("%v", v). Voici une explication de ce qui se passe :
Pour imprimer l'entier valeur de v à la place, vous pouvez utiliser fmt.Printf("%d",v).
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!