Search code examples
stringgostring-formatting

Usage example for Format method with leading zero padding for Big Ints in Golang


I would like to format a big int as a string with leading zeros. I'm looking for an example similar to this, but with Big:

I'm looking at source here.

But when I call:

m := big.NewInt(99999999999999)
fmt.Println(m.Format("%010000000000000000000","d"))

I see:

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

(I understand normally I can use m.String(), but zero padding seems to complicate this, so I'm looking specifically for some help on the Format method.)

Here's my playground link.


Solution

  • You can simply use fmt.Sprintf(...) with the "%020s" directive (where 20 is whatever total length you want). The s verb will use the natural string format of the big int and the 020 modifier will create a string with total length of (at least) 20 with zero padding (instead of whitespace).

    For example (Go Playground):

    m := big.NewInt(99999999999999)
    s := fmt.Sprintf("%020s", m)
    fmt.Println(s)
    // 00000099999999999999