此示例显示 int 类型可转换为字符串类型。但我的问题是为什么?package mainimport ( "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}如果我错了,请纠正我。但这难道不应该是吗?falsereflect.TypeOf(int(0)).ConvertibleTo(reflect.TypeOf("string"))
2 回答

POPMUISE
TA贡献1765条经验 获得超5个赞

MM们
TA贡献1886条经验 获得超2个赞
to 转换的含义是创建一个包含一个 unicode 字符的字符串:由该 int 的编号标识的字符。intstring
请参阅此示例:
package main
import (
"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基本上将其视为默认的潜在错误。
- 2 回答
- 0 关注
- 142 浏览
添加回答
举报
0/150
提交
取消