看看代码吧:(简单得我自己都不敢相信)
package log
import "fmt"
func P(format string,a ...interface{}){
    fmt.Printf(format,a)
}
当在这样的地方被调用时:
log.P("%s,%s,%d","","",0)
我收到错误:
[  %!s(int=0)],%!s(MISSING),%!d(MISSING)
但是如果我像这样直接调用 fmt.Printf :
fmt.Printf("%s,%s,%d","","",0)
它工作得非常完美,非常完美(当然,作为 fmt 的基本用法)。
所以问题是:
供参考:
我相信这很简单,但我只是无法通过谷歌找到答案,从来没有人掉进过地狱?
或者也许我只是不知道如何问,所以我把纯代码放在上面。
或者只是我这次是个超级傻瓜?
我今天注册了 stackoverflow 来寻求这个问题的答案。让我知道我出了什么问题。尽快...
这只是一个小错误。您正在将fmt.Printfwitha作为单个参数进行调用,但事实并非如此。您需要将其作为可变参数传递。
package main
import (
    "fmt"
)
func P(format string, a ...interface{}) {
    fmt.Printf(format, a)
}
func P2(format string, a ...interface{}) {
    fmt.Printf(format, a...)
}
func main() {
    P("%s,%s,%d", "", "", 0)
    fmt.Println()
    P2("%s,%s,%d", "hello", "world", 0)
}
您可以在此处阅读有关可变参数的信息。
| 归档时间: | 
 | 
| 查看次数: | 6245 次 | 
| 最近记录: |