2017-10-14 10 views
0

整数を既存の文字列と連結する場合はcasting、追加の場合は+を使用します。しかし、それは動作しません。連結演算子をキャストして使用して文字列に整数を追加する

package main 

import (
    "fmt" 
) 

func main() { 
    a := 4 
    b := "The value of a is " 

    fmt.Println(b + string(a)) 
} 

これは、go playgroundにガベージ文字を表示し、Unix端末には何も表示しません。これの理由は何でしょうか?この方法では何が間違っていますか? Go language specから

+1

「ガベージ文字」は印刷されません。 Unicodeコードポイント4を持つ文字を出力しています。 –

+0

マイナーな技術的ポイント:Goはキャストを行わず、型変換のみを行います。 – Flimzy

+0

[Goでint-to-stringキャストはどのように機能しますか?](https://stackoverflow.com/questions/34808465/how-do-int-to-string-casts-work-in-go/34808496 #34808496) – icza

答えて

2

ストリングタイプに符号付きまたは符号なし整数値の変換は、整数のUTF-8表現を含む文字列が得られます。

所望の結果を達成するためには、あなたがstrconv.Itoaのようなメソッドを使用して文字列にあなたのint型に変換する必要があります。

package main 

import (
    "fmt" 
    "strconv" 
) 

func main() { 
    a := 4 
    b := "The value of a is " 

    fmt.Println(b + strconv.Itoa(a)) 
} 
+0

なぜですかそれは好きですか? –

+1

これが言語の定義方法です。 –

0

使用fmt.SprintfまたはPrintf。キャスト不要:

fmt.Sprintf("%s%d",s,i) 
関連する問題