1 回答
TA贡献1871条经验 获得超8个赞
您可以使用接受任意数量参数的可变参数辅助函数。可变参数被视为函数内部的一个切片(它是一个切片),因此您可以使用它/返回它。
这个助手是你可以编写的最简单的函数之一:
func pack(data ...byte) []byte {
return data
}
测试它:
func one() byte { return 1 }
func two() (byte, byte) { return 1, 2 }
func three() (byte, byte, byte) { return 1, 2, 3 }
func main() {
var data []byte
data = pack(one())
fmt.Println(data)
data = pack(two())
fmt.Println(data)
data = pack(three())
fmt.Println(data)
}
输出(在Go Playground上试试):
[1]
[1 2]
[1 2 3]
请注意,上述pack()函数只能与返回字节的函数一起使用,仅此而已。如果您想使用它的函数也有其他返回类型,您可以将类型从更改byte为interface{}:
func pack(data ...interface{}) []interface{} {
return data
}
使用以下功能对其进行测试:
func one() (byte, int) { return 1, 2 }
func two() (byte, string, interface{}) { return 1, "b", "c" }
func three() (string, byte, error) { return "x", 2, io.EOF }
(当然使用var data []interface{})
输出是(在Go Playground上试试):
[1 2]
[1 b c]
[x 2 EOF]
- 1 回答
- 0 关注
- 74 浏览
添加回答
举报