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
如何在golang中将变量参数传递给Sprintf_Go_Slice - Fatal编程技术网

如何在golang中将变量参数传递给Sprintf

如何在golang中将变量参数传递给Sprintf,go,slice,Go,Slice,我很懒,想把很多变量传递给Printf函数,可以吗? (示例代码简化为3个参数,我需要10多个参数) 我得到了以下信息: 无法在fmt.Printf的参数中使用v(类型[]字符串)作为类型[]接口{} 是的,这是可能的,只需将您的片声明为[]接口{}类型,因为这是所期望的Printf()签名: func Printf(format string, a ...interface{}) (n int, err error) 因此,这将起作用: s := []interface{}{"a", "b"

我很懒,想把很多变量传递给
Printf
函数,可以吗? (示例代码简化为3个参数,我需要10多个参数)

我得到了以下信息:

无法在fmt.Printf的参数中使用v(类型[]字符串)作为类型[]接口{}


是的,这是可能的,只需将您的片声明为
[]接口{}
类型,因为这是所期望的<代码>Printf()签名:

func Printf(format string, a ...interface{}) (n int, err error)
因此,这将起作用:

s := []interface{}{"a", "b", "c", "d"}
fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3])

v := s[1:]
fmt.Printf("%5s %4s %3s\n", v...)
输出():

[]接口{}
[]字符串
不可转换。有关更多详细信息,请参见此问题+答案:

如果您已经有一个
[]字符串
,或者您使用的函数返回一个
[]字符串
,则必须手动将其转换为
[]接口{}
,如下所示:

ss := []string{"a", "b", "c"}
is := make([]interface{}, len(ss))
for i, v := range ss {
    is[i] = v
}

我不知道如何从regexp.FindStringSubmatch()@DanielYCLin的结果转换到接口,您必须手动完成。请参阅我编辑的答案。
b    c   d
b    c   d
ss := []string{"a", "b", "c"}
is := make([]interface{}, len(ss))
for i, v := range ss {
    is[i] = v
}