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

我想将一个大整数格式化为带有前导零的字符串。我正在寻找一个与此类似的示例,但具有 Big:

我在这里查看源代码。

但是当我打电话时:

m := big.NewInt(99999999999999)

fmt.Println(m.Format("%010000000000000000000","d"))

我懂了:


prog.go:10:22: m.Format("%010000000000000000000", "d") used as value

prog.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 方法的帮助。)

这是我的游乐场链接


一只萌萌小番薯
浏览 133回答 2
2回答

皈依舞

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

慕妹3146593

这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给你更多的控制权,但也更难做到。除非这是您应用程序的性能关键部分,否则只需使用上述解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go