Maison >développement back-end >Golang >Pourquoi `fmt.Println` préfère-t-il `Error()` à `String()` dans Go ?

Pourquoi `fmt.Println` préfère-t-il `Error()` à `String()` dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-30 04:22:11835parcourir

Why Does `fmt.Println` Prefer `Error()` Over `String()` in Go?

Error() Overrides String() dans fmt.Println

Dans le langage de programmation Go, lorsqu'un type implémente à la fois String() et Méthodes Error(), la fonction fmt.Println donne la priorité à Error(). Cela signifie que si les deux méthodes sont implémentées pour un type particulier, fmt.Println utilisera la sortie générée par Error().

Pour comprendre pourquoi c'est le cas, il est important de consulter la documentation du paquet fmt. Selon la documentation, il existe des règles spécifiques qui régissent la manière dont fmt formate différents types de données. Ces règles sont appliquées dans l'ordre suivant :

  1. Si les données implémentent l'interface Formatter, la méthode Formatter est utilisée pour formater les données.
  2. Si le format %#v est utilisé et les données implémentent l'interface GoStringer, la méthode GoStringer est utilisée pour formater les données.
  3. Si les données implémentent l'interface d'erreur, la méthode Error est utilisée pour formater les données.
  4. Si les données implémentent la méthode String(), la méthode String() est utilisée pour formater les données.

Dans l'exemple fourni, le type Person implémente les deux Méthodes String() et Error(). Cependant, lorsque la fonction fmt.Println est appelée pour imprimer le type Person, la méthode Error() est appelée à la place de la méthode String(). En effet, la méthode Error() a priorité sur la méthode String() conformément aux règles décrites dans la documentation du package fmt.

Par conséquent, lorsqu'un type implémente à la fois les méthodes String() et Error(), le La fonction fmt.Println utilisera toujours la sortie de la méthode Error(). En effet, la méthode Error() est classée plus haut que la méthode String() dans l'ordre des règles de formatage.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn