如何在Golang中将可变长度参数作为另一个函数的参数传递?

61

如何在 Go 中传递可变长度的参数?例如,我想调用以下函数:

func MyPrint(format string, args ...interface{}) {
  fmt.Printf("[MY PREFIX] " + format, ???)
}

// to be called as: MyPrint("yay %d", 213) 
//              or  MyPrint("yay")
//              or  MyPrint("yay %d %d",123,234)
1个回答

110

找到了......接受可变长度参数的函数称为可变参数函数。例如:

package main

import "fmt"

func MyPrint(format string, args ...interface{}) {
  fmt.Printf("[MY PREFIX] " + format, args...)
}

func main() {
 MyPrint("yay %d %d\n",123,234);
 MyPrint("yay %d\n ",123);
 MyPrint("yay %d\n");
}

1
对于那些想要参考的人,请查看Effective Go - hsluo
2
请注意,MyPrint 的最终调用缺少一个参数,因此 fmt 将抱怨缺少要由 %d 打印的参数。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接