Вызов имеет возможную директиву форматирования - PullRequest
0 голосов
/ 28 декабря 2018

Когда я запускаю этот код

package main
import ("fmt")
func main() {
    i := 5
    fmt.Println("Hello, playground %d",i)
}

( ссылка на игровую площадку )

я получаю следующее предупреждение: prog.go: 5: возможен форматирование вызова Printlnдиректива% d Перейти, ветеринар вышел.

Как правильно это сделать?

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

fmt.Println не выполняет форматирование, например %d.Вместо этого он использует формат своих аргументов по умолчанию и добавляет пробелы между ними.

fmt.Println("Hello, playground",i)  // Hello, playground 5

Если вы хотите форматировать в стиле printf, используйте fmt.Printf.

fmt.Printf("Hello, playground %d\n",i)

И вам не нужно быть особенным в отношении типа.%v, как правило, поймет это.

fmt.Printf("Hello, playground %v\n",i)
0 голосов
/ 10 августа 2019

package main
import ("fmt")
func main() {
    i := 5
    fmt.Println("Hello, playground %d",i)
}
===================================================
package main
import ("fmt")
func main() {
    i := 5
    fmt.Printf("Hello, playground %d",i)
}
0 голосов
/ 28 декабря 2018

В предупреждении говорится, что у вас есть директива форматирования (в данном случае %d) при вызове Println.Это предупреждение, потому что Println не поддерживает директивы форматирования .Эти директивы поддерживаются отформатированными функциями Printf и Sprintf.Это подробно объясняется в документации к пакету fmt .

. Как вы можете ясно увидеть, когда запускаете свой код, вывод будет

Hello, playground %d 5

, поскольку Println делает то, что говорят его документы - он печатает свои аргументы с последующим переводом строки.Измените это на Printf, что, скорее всего, то, что вы намеревались, , и вы получите вместо этого :

Hello, playground 5

Что, вероятно, то, что вы намеревались.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...