Maison >développement back-end >Golang >Quand devez-vous utiliser `%v` pour imprimer dans Go ?
Utiliser %v pour l'impression : problèmes potentiels à prendre en compte
Alors que le verbe %v permet d'imprimer à la fois des entiers (%d) et des chaînes (%s), son utilisation doit être considérée avec prudence pour éviter un formatage involontaire problèmes.
Format par défaut vs format spécifique
Contrairement au verbe %d, qui demande au package fmt d'imprimer la valeur sous forme de nombre (en base 10), le verbe %v utilise le format par défaut. Ce format par défaut peut être remplacé en implémentant l'interface fmt.Stringer (avec une méthode de chaîne String()) pour votre type personnalisé.
Exemple
Considérez le code suivant en utilisant un type personnalisé MyInt qui implémente fmt.Stringer interface :
type MyInt int func (mi MyInt) String() string { return fmt.Sprintf("*%d*", int(mi)) } func main() { var mi MyInt = 2 fmt.Printf("%d %v", mi, mi) }
Sortie :
2 *2*
Lors de l'utilisation de %v, le package fmt vérifie si la valeur implémente fmt.Stringer et appelle son String() méthode. Cela entraîne l'affichage de la valeur avec le format remplacé ("2" au lieu de "2").
Règles de formatage
Le fmt le package suit un ensemble spécifique de règles de formatage lors de l’utilisation %v :
Il 检查接口实现:
Conclusion
Bien que ce soit techniquement Il est possible de toujours utiliser %v pour l'impression, il est généralement recommandé d'utiliser des verbes spécifiques comme %d et %s pour les entiers et les chaînes. L'utilisation de %v peut entraîner un comportement de formatage inattendu si vos types implémentent certaines interfaces, en particulier fmt.Stringer.
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!