小编hen*_*nry的帖子

当格式字符串来自参数时,fmt.Printf 中出现类似“%!s”的错误(go 语言)

看看代码吧:(简单得我自己都不敢相信)

package log

import "fmt"

func P(format string,a ...interface{}){
    fmt.Printf(format,a)
}
Run Code Online (Sandbox Code Playgroud)

当在这样的地方被调用时:

log.P("%s,%s,%d","","",0)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

[  %!s(int=0)],%!s(MISSING),%!d(MISSING)
Run Code Online (Sandbox Code Playgroud)

但是如果我像这样直接调用 fmt.Printf :

fmt.Printf("%s,%s,%d","","",0)
Run Code Online (Sandbox Code Playgroud)

它工作得非常完美,非常完美(当然,作为 fmt 的基本用法)。

所以问题是:

为什么 log.P 不起作用?

供参考:

我相信这很简单,但我只是无法通过谷歌找到答案,从来没有人掉进过地狱?

或者也许我只是不知道如何问,所以我把纯代码放在上面。

或者只是我这次是个超级傻瓜?

我今天注册了 stackoverflow 来寻求这个问题的答案。让我知道我出了什么问题。尽快...

format printf go

3
推荐指数
1
解决办法
6245
查看次数

标签 统计

format ×1

go ×1

printf ×1