2017-01-22 32 views
15

uint64stringを印刷しようとしていますが、私が使用しているstrconvの方法の組み合わせは動作していません。uint64をgolangの文字列に変換する

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

は私を与える:

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

は、どのように私はこのstringを印刷することができますか?あなたはそれをすることを与えなければならないので、

答えて

23

strconv.Itoa()は、タイプintの値を期待:また、(uint64が64である間)

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

をしかしintが32ビットであれば、これは精度を失う可能性があることを知っているサインオンネスは異なっている。より多くのオプションについては

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

、この回答を参照してください:strconv.FormatUint()はそれがタイプuint64の値を期待して良いだろうGolang: format a string without printing?

あなたの目的は、単に値を印刷する場合は、変換する必要はありません

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

log.Printf

:それは、どちらも intにも stringに、これらのいずれかを使用
log.Printf("The amount is: %d\n", charge.Amount) 
4

実際に文字列にしておきたい場合は、スプリント機能の1つを使用できます。例えば:あなたはstringint64を変換したい場合は

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

は、あなたが使用することができます。

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

または

strconv.FormatUint 
関連する問題