Go 如何用“…”包装函数;。。。接口{}";参数(如Printf)
在我当前的项目中,我试图编写一个日志函数,有条件地调用fmt.Println 我当前的日志函数如下所示:Go 如何用“…”包装函数;。。。接口{}";参数(如Printf),go,Go,在我当前的项目中,我试图编写一个日志函数,有条件地调用fmt.Println 我当前的日志函数如下所示: func Log(level int, a ...interface{}) { if level <= LogLevel { fmt.Println(a) } } func日志(级别int,一个…接口{}){ 如果级别只需将fmt.Println(a)更改为fmt.Println(a…) 请参阅go规范中的“将参数传递给…参数”谢谢。我真的应该坐下来,
func Log(level int, a ...interface{}) {
if level <= LogLevel {
fmt.Println(a)
}
}
func日志(级别int,一个…接口{}){
如果级别只需将fmt.Println(a)
更改为fmt.Println(a…)
请参阅go规范中的“将参数传递给…参数”谢谢。我真的应该坐下来,花些时间通读整个规范。只是想澄清一下,当你执行fmt时,你在做什么。Println(a)
是打印数组本身,所以Println
格式化它以显示它是一个数组。当你执行fmt.Println(a…)
,它被扩展为fmt.Println(a[0]、a[1]、a[2])
等等,而Println
将其视为一个值序列而不是数组。
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]