From: Rob Pike Date: Sun, 14 Jan 2024 04:34:49 +0000 (+1100) Subject: fmt: don't pad strings with zeros X-Git-Tag: go1.23rc1~1409 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=704401ffa06;p=gostls13.git fmt: don't pad strings with zeros It's what the documentation says, and oddly it already behaves correctly for right padding, not left. (We never pad with zeros on the right.) Just don't do it. Fixes #56486 Change-Id: I2465edea93c69084e33bee0d945d5a1b85e6cd14 Reviewed-on: https://go-review.googlesource.com/c/go/+/555776 Reviewed-by: Russ Cox TryBot-Result: Gopher Robot Run-TryBot: Rob Pike Reviewed-by: Cherry Mui --- diff --git a/src/fmt/fmt_test.go b/src/fmt/fmt_test.go index 6a79862f28..3f82fb6814 100644 --- a/src/fmt/fmt_test.go +++ b/src/fmt/fmt_test.go @@ -304,8 +304,8 @@ var fmtTests = []struct { {"%2s", []byte("\u263a"), " ☺"}, {"%-5s", "abc", "abc "}, {"%-5s", []byte("abc"), "abc "}, - {"%05s", "abc", "00abc"}, - {"%05s", []byte("abc"), "00abc"}, + {"%05s", "abc", " abc"}, + {"%05s", []byte("abc"), " abc"}, {"%5s", "abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz"}, {"%5s", []byte("abcdefghijklmnopqrstuvwxyz"), "abcdefghijklmnopqrstuvwxyz"}, {"%.5s", "abcdefghijklmnopqrstuvwxyz", "abcde"}, diff --git a/src/fmt/print.go b/src/fmt/print.go index cb393bd763..9596888854 100644 --- a/src/fmt/print.go +++ b/src/fmt/print.go @@ -703,6 +703,11 @@ func (p *pp) printArg(arg any, verb rune) { return } + // Bug fix: avoid padding strings with zeros. Issue 56486. + if verb == 's' { + p.fmt.zero = false + } + // Some types can be done without reflection. switch f := arg.(type) { case bool: