格式字符串中没有占位符



这个问题是关于在 Go 中格式化字符串时的最佳实践。

每当我像这样使用打印库时:

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

我收到来自我的IDE(Goland(的警告,说:

No placeholders in format string

那是什么意思?正确的印刷品会是什么样子?

log.Printf()需要一个格式字符串作为其第一个参数:

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

格式字符串是一个字符串,您可以在其中使用带有修饰符的谓词来布置您希望结果字符串的外观。没有任何谓词的格式字符串很可能是一个错误(表明您可能忘记了其中的某些内容,或者如果它确实不需要谓词,则不应使用需要格式字符串的Pritnf()(。您可以在fmt包的文档中阅读有关格式字符串及其 Go 语法的更多信息。

例如,这是一个格式字符串:

"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 Playground上尝试(:

2009/11/10 23:00:00 Hi, my name is Bob, and I'm 22 years old.

最新更新