为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 string(float64) 在 1.13 中返回 _ 而在 1.16 中返回错误

为什么 string(float64) 在 1.13 中返回 _ 而在 1.16 中返回错误

Go
慕侠2389804 2022-08-15 10:06:10
请考虑以下代码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编码此符文,产生字符串 。(为了得到你需要。stringstring(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.Itoafmt.Sprintgo vet


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信