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
を印刷するにはどうすればよいですか?
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
実際に文字列に保持したい場合は、スプリント関数のいずれかを使用できます。例えば:
myString := fmt.Sprintf("%v", charge.Amount)
log.Printf("The amount is: %d\n", charge.Amount)
文字列をuint64に変換する方法を探してここに来た場合、次のようになります。
newNumber, err := strconv.ParseUint("100", 10, 64)