Конвертировать 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?

6 ответов

Решение

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)

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

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

или же

strconv.FormatUint

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

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

log.Printf

log.Printf("The amount is: %d\n", charge.Amount)
      func main() {
    var a uint64
    a = 3
    var s string
    s = fmt.Sprint(a)
    fmt.Printf("%s", s)
}

Если вы пришли сюда, чтобы узнать, как преобразовать строку в uint64, вот как это делается:

newNumber, err := strconv.ParseUint("100", 10, 64)
Другие вопросы по тегам