Подтвердить что ты не робот

Преобразование uint64 в строку в golang

Я пытаюсь напечатать string с помощью uint64, но никакая комбинация методов strconv, которые я использую, не работает.

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

Дает мне:

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

Как я могу напечатать этот string?

4b9b3361

Ответ 1

strconv.Itoa() ожидает значение типа int, поэтому вы должны дать ему следующее:

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

Но знайте, что это может потерять точность, если int является 32-битным (в то время как uint64 равно 64), также знака отличается. strconv.FormatUint() было бы лучше, так как ожидается значение типа uint64:

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

Дополнительные параметры см. в этом ответе: Golang: форматировать строку без печати?

Если ваша цель - просто распечатать значение, вам не нужно преобразовывать его, ни в int, ни в string, используйте один из следующих:

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

Ответ 2

если вы хотите преобразовать int64 в string, вы можете использовать:

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

или

strconv.FormatUint

Ответ 3

Если вы действительно хотите сохранить его в строке, вы можете использовать одну из функций Sprint. Например:

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

Ответ 4

log.Printf

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