Нет заполнителей в строке формата - PullRequest
0 голосов
/ 24 сентября 2019

Этот вопрос о передовых методах форматирования строк в Go.

Всякий раз, когда я использую библиотеку печати, вот так:

log.Printf("Greeting:",resp.GetMessage())

Я получаюпредупреждение от моей IDE (Goland), говорящее:

No placeholders in format string

Что это значит?Как будет выглядеть правильный отпечаток?

1 Ответ

3 голосов
/ 24 сентября 2019

log.Printf() ожидает строку формата в качестве первого аргумента:

func Printf(format string, v ...interface{})

Строка формата - это строка, в которой вы можете использовать глаголы с модификаторами длявыложите как вы хотите чтобы получилась строка результата.Строка формата без каких-либо глаголов, вероятно, является ошибкой (указывая на то, что вы, вероятно, что-то забыли из нее, или если она действительно не нуждается в глаголах, вам не следует использовать Pritnf(), которая ожидает строку формата).Подробнее о строках формата и их синтаксисе Go можно прочитать в документе пакета fmt.

Например, это строка формата:

"Greeting: %s"

Вот как это будет использоваться:

log.Printf("Greeting: %s", resp.GetMessage())

Это очень простой пример и не требует форматированного вывода.Если у вас нет строки формата, используйте log.Print() или log.Println() (для них не требуется строка формата):

log.Println("Greeting:", resp.GetMessage())

Вариант Printf() пригодится, когда вам нужно более сложное форматирование, а не просто записать 2 строки (сцепленные).

Например:

log.Printf("Hi, my name is %s, and I'm %d years old.", "Bob", 22)

Вывод будет (попробуйте на Игровая площадка Go ):

2009/11/10 23:00:00 Hi, my name is Bob, and I'm 22 years old.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...