Maison >développement back-end >Golang >%v peut-il imprimer à la fois des entiers et des chaînes dans « fmt.Printf » de Go ?

%v peut-il imprimer à la fois des entiers et des chaînes dans « fmt.Printf » de Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-14 09:32:021031parcourir

Can %v Print Both Integers and Strings in Go's `fmt.Printf`?

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!

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