请考虑以下代码c := 90d := 101a := int64( (float64(c) / float64(d)) * 100) fmt.Println(a) fmt.Println(string(a))请考虑以下代码c := 90d := 101a := int64( (float64(c) / float64(d)) * 100) fmt.Println(a) fmt.Println(string(a))这是1.16个游乐场返回./prog.go:13:21: conversion from int64 to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?)在我的本地1.13中,它返回_也不是我所期望的89有人可以给我一个提示,为什么这是行为,以及将int64转换为字符串的推荐方法是什么?返回./prog.go:13:21: conversion from int64 to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?)在我的本地1.13中,它返回_也不是我所期望的89有人可以给我一个提示,为什么这是行为,以及将int64转换为字符串的推荐方法是什么?
1 回答
LEATH
TA贡献1936条经验 获得超6个赞
有关转换的 Go 规范 部分将“从有符号或无符号整数类型转换为 ”“定义为生成一个字符串,该字符串包含由整数值指定的单个 Unicode 符文的 UTF-8 表示形式。因此,正如《赞美诗:迪斯科》在注释中指出的那样,首先将89转换为相应的Unicode符文,该符文只是拉丁文大写字母Y,然后以UTF-8编码此符文,产生字符串 。(为了得到你需要。string
string(89)
"Y"
_
string(95)
正如本文档同样指出的那样,将产生与 相同的结果,并产生 或 。string(0xf8)
"ø"
"\xc3\xb8"
string(0x6535)
"日"
"\xe6\x97\xa5"
很多Go用户对此感到惊讶,期待生产.事实上,你需要或类似的东西来做到这一点:另请参阅 string() 做我希望 strconv 做的事情。Itoa() 会做的。Rob Pike本人建议从Go 2中删除string(integer_value
)。正如Cerise Limón在链接的问题中指出的那样,这就是为什么现在指出这个常见的错误。string(89)
"89"
strconv.Itoa
fmt.Sprint
go vet
- 1 回答
- 0 关注
- 190 浏览
添加回答
举报
0/150
提交
取消