2017-10-14 81 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終端上不會顯示任何內容。這可能是什麼原因?這種方法有什麼不正確?

+1

它不打印「垃圾字符」;它使用Unicode代碼點4打印一個字符。 –

+0

小技術點:請注意,Go不會執行投射,只會進行類型轉換。 – Flimzy

+0

的可能的複製[如何詮釋到字符串蒙上工作去?](https://stackoverflow.com/questions/34808465/how-do-int-to-string-casts-work-in-go/34808496 #34808496) – icza

回答

2

Go language spec

一個符號或無符號的整數值轉換爲字符串類型產生含有整數的UTF-8表示的字符串。

爲了達到預期的效果,您需要使用一種方法來你的INT轉換爲字符串像strconv.Itoa

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.SprintfPrintf;不需要鑄造:

fmt.Sprintf("%s%d",s,i)