通过强制转换并使用连接运算符将整数附加到字符串

问题描述:

我想通过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

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

这就是语言的定义。 –

使用fmt.SprintfPrintf;不需要铸造:

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