2017-01-22 31 views
15

Próbuję wydrukować numer string za pomocą uint64, ale nie działa żadna kombinacja strconv używanych przeze mnie metod.Konwertuj uint64 na ciąg znaków w golang

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

daje mi:

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

Jak mogę wydrukować ten string?

Odpowiedz

23

strconv.Itoa() oczekuje wartości typu int, więc trzeba dać to, że:

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

Ale wiem, że to może stracić precyzję jeśli int jest 32-bitowy (podczas uint64 jest 64), a także steru- ness jest inny. strconv.FormatUint() byłoby lepiej jako że oczekuje wartości typu uint64:

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

uzyskać więcej informacji, zobacz tę odpowiedź: Golang: format a string without printing?

Jeśli celem jest po prostu wydrukować wartości, nie trzeba konwertować Opisz ani int ani string, użyj jednego z nich:

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

Jeśli rzeczywiście chcesz zachować go w łańcuchu, możesz użyć jednej z funkcji Sprint. Na przykład:

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

jeśli chcesz przekonwertować int64 do string, można użyć:

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

lub

strconv.FormatUint