web-dev-qa-db-fra.com

Conversion de uint64 en chaîne en golang

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?

35
Antoine

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)
52
icza

si vous voulez convertir int64 à string, vous pouvez utiliser:

strconv.FormatInt(time.Now().Unix(), 10)

ou

strconv.FormatUint
22
lingwei64

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)
5
Peter Fendrich

log.Printf

log.Printf("The amount is: %d\n", charge.Amount)
2
ctcherry

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)
1
Bill Zelenko