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