Call has possible formatting directive
Solution 1:
fmt.Println
doesn't do formatting things like %d
. Instead, it uses the default format of its arguments, and adds spaces between them.
fmt.Println("Hello, playground",i) // Hello, playground 5
If you want printf style formatting, use fmt.Printf
.
fmt.Printf("Hello, playground %d\n",i)
And you don't need to be particular about the type. %v
will generally figure it out.
fmt.Printf("Hello, playground %v\n",i)
Solution 2:
The warning is telling you you have a formatting directive (%d
in this case) in a call to Println
. This is a warning because Println
does not support formatting directives. These directives are supported by the formatted functions Printf
and Sprintf
. This is explained thoroughly in the fmt
package documentation.
As you can plainly see when you run your code, the output is
Hello, playground %d 5
Because Println
does what its docs say - it prints its arguments followed by a line break. Change that to Printf
, which is likely what you intended, and you get this instead:
Hello, playground 5
Which is presumably what you intended.