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

Golang 中 Big Ints 前导零填充的 Format 方法的使用示例

Golang 中 Big Ints 前导零填充的 Format 方法的使用示例

Go
一只萌萌小番薯 2023-04-17 15:08:31
我想将一个大整数格式化为带有前导零的字符串。我正在寻找一个与此类似的示例,但具有 Big:我在这里查看源代码。但是当我打电话时:m := big.NewInt(99999999999999)fmt.Println(m.Format("%010000000000000000000","d"))我懂了:prog.go:10:22: m.Format("%010000000000000000000", "d") used as valueprog.go:10:23: cannot use "%010000000000000000000" (type string) as type fmt.State in argument to m.Format:    string does not implement fmt.State (missing Flag method)prog.go:10:48: cannot use "d" (type string) as type rune in argument to m.Format(我知道通常我可以使用 m.String(),但零填充似乎使这个复杂化,所以我专门寻找有关 Format 方法的帮助。)这是我的游乐场链接。
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

您可以简单地使用fmt.Sprintf(...)指令"%020s"(其中 20 是您想要的任何总长度)。动词s将使用 big int 的自然字符串格式,020修饰符将创建一个总长度(至少)为 20 且零填充(而不是空格)的字符串。

例如(去游乐场):

m := big.NewInt(99999999999999)

s := fmt.Sprintf("%020s", m)

fmt.Println(s)

// 00000099999999999999


查看完整回答
反对 回复 2023-04-17
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

Int.Format()不是供您手动调用的(尽管您可以),但它是为了实现fmt.Formatter,因此fmt包将支持big.Int开箱即用的格式化值。

看这个例子:

m := big.NewInt(99)

fmt.Printf("%06d\n", m)


if _, ok := m.SetString("1234567890123456789012345678901234567890", 10); !ok {

    panic("big")

}

fmt.Printf("%060d\n", m)

000099
000000000000000000001234567890123456789012345678901234567890

这是最简单的,所以使用它。手动创建一个fmt.Formatter给你更多的控制权,但也更难做到。除非这是您应用程序的性能关键部分,否则只需使用上述解决方案。


查看完整回答
反对 回复 2023-04-17
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

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