如何使用“...interface{}”参数包装函数(如 Printf)

在我当前的项目中,我正在尝试编写一个有条件地调用 fmt.Println 的日志函数。


我当前的 Log 函数如下所示:


func Log(level int, a ...interface{}) {

    if level <= LogLevel {

        fmt.Println(a)

    }

}

但是当我这样称呼它时,由于某种原因,Log 的输出被括在括号中:


http://play.golang.org/p/Aa8vC54Ih0


package main


import "fmt"


var LogLevel int


func main() {

    fmt.Println("string", 10, 3.1415926)

    LogLevel = 1

    Log(1, "string", 10, 3.1415926)

}


func Log(level int, a ...interface{}) {

    if level <= LogLevel {

        fmt.Println(a)

    }

}


string 10 3.1415926

[string 10 3.1415926]

这对我来说看起来像是aLog 中的论点以某种方式被转换了。我将如何以a与直接调用 fmt.Println 相同的方式传递给 fmt.Println?


呼如林
浏览 168回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go