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.