2017-01-22 4 views
15

Ich versuche, eine string mit einer uint64 zu drucken, aber keine Kombination von strconv Methoden, die ich verwende funktioniert.Convert uint64 in String in Golang

log.Println("The amount is: " + strconv.Itoa((charge.Amount))) 

Gibt mir:

cannot use charge.Amount (type uint64) as type int in argument to strconv.Itoa

Wie kann ich dieses string drucken?

Antwort

23

strconv.Itoa() erwartet einen Wert vom Typ int, so haben Sie es zu geben, dass:

log.Println("The amount is: " + strconv.Itoa(int(charge.Amount))) 

Aber wissen, dass diese Genauigkeit verlieren kann, wenn int 32-Bit ist (während uint64 64), auch sign- Das ist anders. strconv.FormatUint() wäre besser, als dass ein Wert vom Typ erwartet uint64:

log.Println("The amount is: " + strconv.FormatUint(charge.Amount, 10)) 

Weitere Optionen finden Sie diese Antwort: Golang: format a string without printing?

Wenn Ihr Zweck nur den Wert drucken ist, brauchen Sie nicht zu konvertieren es weder zu int noch zu string, eine davon verwenden:

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

Wenn Sie es tatsächlich in einer Zeichenfolge beibehalten möchten, können Sie eine der Sprint-Funktionen verwenden. Zum Beispiel:

myString := fmt.Sprintf("%v", charge.Amount) 
8

wenn Sie int64 zu string konvertieren möchten, können Sie:

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

oder

strconv.FormatUint