web-dev-qa-db-ja.com

gointでuint64を文字列に変換します

stringuint64で印刷しようとしていますが、使用している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を印刷するにはどうすればよいですか?

35
Antoine

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)
52
icza

int64stringに変換する場合は、次を使用できます。

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

または

strconv.FormatUint
22
lingwei64

実際に文字列に保持したい場合は、スプリント関数のいずれかを使用できます。例えば:

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

log.Printf

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

文字列をuint64に変換する方法を探してここに来た場合、次のようになります。

newNumber, err := strconv.ParseUint("100", 10, 64)
1
Bill Zelenko