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

请考虑以下代码


c := 90

d := 101

a := int64( (float64(c) / float64(d)) * 100)

    fmt.Println(a)

    fmt.Println(string(a))

请考虑以下代码


c := 90

d := 101

a := 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转换为字符串的推荐方法是什么?


慕侠2389804
浏览 191回答 1
1回答

LEATH

有关转换的 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go