go math/big: big.Int fmt.Formatter 实现应该支持 %q

bvk5enib  于 4个月前  发布在  Go
关注(0)|答案(2)|浏览(145)

我建议对 *big.Int 类型进行一个小的生活质量改进,以支持将整数作为引号字符串打印。*big.Int 实现 fmt.Formatter,并且(与文档相反)支持 s 动词,以十进制格式打印整数。这使得您可以执行以下操作:

fmt.Printf("My int: %s\n", big.NewInt(1))

然而,它不支持 q,这对于习惯于特殊格式考虑的字符串格式的人来说可能会感到意外,其中 q 对于实现 fmt.Stringer 类型的类型是隐式支持的。相反,您必须显式调用 String() 方法:

fmt.Printf("My quoted int: %q\n", big.NewInt(1).String())

如果您忘记了?
https://play.golang.org/p/5YiBHW5djUM
我不认为会有一个很大的向后兼容性问题。
如果大家同意,我很乐意提供代码更改。

xwbd5t1u

xwbd5t1u2#

(与文档相反)支持s动词,以十进制格式打印整数。
自10年前以来未记录的https://codereview.appspot.com/4552056,也许它不应该支持它,以避免混淆。
此外,对于%q(单引号/双引号、数字基数)的预期输出也很有趣,例如,纯整数根本不支持%s,而%q输出a single-quoted character literal safely escaped with Go syntax.,这可能不是直观的https://play.golang.org/p/o7pBzoVAFdV
我认为对于

fmt.Printf("My quoted int: %q\n", big.NewInt(1).String())

正确的方式是

fmt.Printf("My quoted int: \"%d\"\n", big.NewInt(1))

相关问题