我建议对 *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
我不认为会有一个很大的向后兼容性问题。
如果大家同意,我很乐意提供代码更改。
2条答案
按热度按时间hiz5n14c1#
/cc @griesemer
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。我认为对于
正确的方式是