将多个返回函数分配给容器(列表)

我在 Golang 很新鲜。我想将多个返回值函数的返回值分配给列表(或任何容器)。考虑以下函数:


func Split32(in uint32) (b0, b1, b2, b3 byte) {

b0 = byte(in & 0xFF)

b1 = byte((in & uint32(0xFF<<8)) >> 8)

b2 = byte((in & uint32(0xFF<<16)) >> 16)

b3 = byte((in & uint32(0xFF<<24)) >> 24)

return

}

我知道下面的调用符号:


var a uint32 = 0xABFEAA12

c0, c1, c2, c3 := bytes.Split32(a)

它对我来说很好。但我想知道是否有可能将此返回值直接分配给列表(或另一个容器):


var a uint32 = 0xABFEAA12

l := bytes.Split32(a)


30秒到达战场
浏览 75回答 1
1回答

ITMISS

您可以使用接受任意数量参数的可变参数辅助函数。可变参数被视为函数内部的一个切片(它是一个切片),因此您可以使用它/返回它。这个助手是你可以编写的最简单的函数之一:func pack(data ...byte) []byte {&nbsp; &nbsp; return data}测试它:func one() byte&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ return 1 }func two() (byte, byte)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ return 1, 2 }func three() (byte, byte, byte) { return 1, 2, 3 }func main() {&nbsp; &nbsp; var data []byte&nbsp; &nbsp; data = pack(one())&nbsp; &nbsp; fmt.Println(data)&nbsp; &nbsp; data = pack(two())&nbsp; &nbsp; fmt.Println(data)&nbsp; &nbsp; data = pack(three())&nbsp; &nbsp; fmt.Println(data)}输出(在Go Playground上试试):[1][1 2][1 2 3]请注意,上述pack()函数只能与返回字节的函数一起使用,仅此而已。如果您想使用它的函数也有其他返回类型,您可以将类型从更改byte为interface{}:func pack(data ...interface{}) []interface{} {&nbsp; &nbsp; return data}使用以下功能对其进行测试:func one() (byte, int)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ return 1, 2 }func two() (byte, string, interface{}) { return 1, "b", "c" }func three() (string, byte, error)&nbsp; &nbsp; &nbsp;{ return "x", 2, io.EOF }(当然使用var data []interface{})输出是(在Go Playground上试试):[1 2][1 b c][x 2 EOF]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go