J'essaie d'imprimer un string
avec un uint64
Mais aucune combinaison des méthodes strconv
que j'utilise ne fonctionne.
log.Println("The amount is: " + strconv.Itoa((charge.Amount)))
Donne moi:
cannot use charge.Amount (type uint64) as type int in argument to strconv.Itoa
Comment puis-je imprimer ce string
?
strconv.Itoa()
attend une valeur de type int
, vous devez donc lui donner ceci:
log.Println("The amount is: " + strconv.Itoa(int(charge.Amount)))
Mais sachez que cela peut perdre en précision si int
est en 32 bits (alors que uint64
Est en 64), la signature est également différente. strconv.FormatUint()
serait mieux, car cela suppose une valeur de type uint64
:
log.Println("The amount is: " + strconv.FormatUint(charge.Amount, 10))
Pour plus d'options, voir cette réponse: Golang: formater une chaîne sans imprimer?
Si votre objectif est simplement d'imprimer la valeur, vous n'avez pas besoin de la convertir, ni en int
ni en string
, utilisez l'une de ces méthodes:
log.Println("The amount is:", charge.Amount)
log.Printf("The amount is: %d\n", charge.Amount)
si vous voulez convertir int64
à string
, vous pouvez utiliser:
strconv.FormatInt(time.Now().Unix(), 10)
ou
strconv.FormatUint
Si vous souhaitez réellement le conserver dans une chaîne, vous pouvez utiliser l’une des fonctions Sprint. Par exemple:
myString := fmt.Sprintf("%v", charge.Amount)
log.Printf("The amount is: %d\n", charge.Amount)
Si vous êtes venu ici pour savoir comment convertir une chaîne de caractères en int64, voici comment cela se fait:
newNumber, err := strconv.ParseUint("100", 10, 64)