Maison >développement back-end >Golang >%v peut-il imprimer à la fois des entiers et des chaînes dans « fmt.Printf » de Go ?
Utiliser %v pour imprimer différents types de données
Il est courant de rencontrer des situations où nous devons imprimer à la fois des entiers (%d) et chaînes (%s) en utilisant printf. On pourrait se demander s'il est possible d'utiliser %v pour les deux types. Bien que cela soit acceptable, l'utilisation de %v sans discernement peut conduire à des résultats inattendus.
Le formatage par défaut de %v
fmt.Printf("%v") est un format générique espace réservé qui imprime la valeur en utilisant le format « par défaut », qui peut être remplacé en spécifiant des indicateurs de format. Pour les entiers, %v est par défaut le formatage en base 10 (%d). Cependant, %v revient à l'interface fmt.Stringer pour les types non primitifs.
Considérons l'exemple suivant :
type MyInt int func (mi MyInt) String() string { return fmt.Sprint("*", int(mi), "*") } func main() { var mi MyInt = 2 fmt.Printf("%d %v", mi, mi) }
Sortie :
2 *2*
In dans ce cas, %v respecte l'implémentation de la méthode String() dans MyInt et affiche "2", remplaçant le formatage entier par défaut.
Considérations
Utiliser %v à la fois pour les entiers et les chaînes n'est techniquement pas faux. Cependant, cela peut entraîner un formatage qui n’est pas souhaitable dans toutes les situations. Il est recommandé d'utiliser le spécificateur de format explicite (%d pour les entiers et %s pour les chaînes) pour garantir un formatage cohérent et prévisible.
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!