Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何用“…”包装函数;。。。接口{}";参数(如Printf)_Go - Fatal编程技术网

Go 如何用“…”包装函数;。。。接口{}";参数(如Printf)

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规范中的“将参数传递给…参数”谢谢。我真的应该坐下来,

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

我当前的日志函数如下所示:

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]