猿问

为什么“int”可以转换为“字符串”?

此示例显示 int 类型可转换为字符串类型。但我的问题是为什么?


package main


import (

    "fmt"

    "reflect"

)


func main() {

    it := reflect.TypeOf(42)

    st := reflect.TypeOf("hello")


    fmt.Printf("%q is convertible to %q: %v\n",

        it, st, it.ConvertibleTo(st))

        // OUTPUT: "int" is convertible to "string": true


    fmt.Printf("%q is convertible to %q: %v\n",

        st, it, st.ConvertibleTo(it))

        // OUTPUT: "string" is convertible to "int": false

}

如果我错了,请纠正我。但这难道不应该是吗?false


reflect.TypeOf(int(0)).ConvertibleTo(reflect.TypeOf("string"))


幕布斯6054654
浏览 143回答 2
2回答

POPMUISE

为什么“int”可以转换为“字符串”?因为语言规范1 是这样说的:将有符号或无符号整数值转换为字符串类型将生成一个包含整数的 UTF-8 表示形式的字符串。1:转换,“与字符串类型之间的转换”部分

MM们

to 转换的含义是创建一个包含一个 unicode 字符的字符串:由该 int 的编号标识的字符。intstring请参阅此示例:package mainimport (    "fmt")func main() {    fmt.Println(string(int(1234)))}在操场上输出:Ӓ这是因为 Unicode 字符 1234(或更标准的表示形式中的 U+04D2)是:西里尔字母大写字母 A,带透视您还会注意到,在 Go 操场上,您会看到 go vet 的红色输出,这是一个在 Go 程序中查找常见问题的工具。输出警告:./prog.go:8:14:从 int 到字符串的转换会产生一个符文字符串,而不是一串数字(你的意思是 fmt.Sprint(x)?)这是因为这种转换相当奇怪并且不常用,因此go vet基本上将其视为默认的潜在错误。
随时随地看视频慕课网APP

相关分类

Go
我要回答