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 關注
- 94 瀏覽
添加回答
舉報