Golang新手求教:如何将多返回值函数结果直接赋值给容器
如何将Golang多返回值函数的结果直接存入列表/容器
嘿,作为Golang新手,这个问题我当初也纠结过!Golang本身确实没有直接把多返回值一键塞进slice或容器的语法,但有几个简洁的办法能实现你想要的效果,我给你整理一下:
方法1:临时变量+手动构建Slice
这是最直观的方式,先接收所有返回值,再把它们打包进slice:
var a uint32 = 0xABFEAA12 b0, b1, b2, b3 := Split32(a) byteSlice := []byte{b0, b1, b2, b3}
这种方式可读性拉满,适合偶尔需要转换的场景。
方法2:封装一个包装函数
如果你需要频繁把Split32的结果转成slice,不如写个小包装函数,以后调用就一步到位了:
// 给Split32加个包装,直接返回slice func Split32ToSlice(in uint32) []byte { b0, b1, b2, b3 := Split32(in) return []byte{b0, b1, b2, b3} } // 调用时超简洁 var a uint32 = 0xABFEAA12 l := Split32ToSlice(a)
这个方式既保持了代码整洁,又复用性强,非常推荐。
方法3:匿名函数一行搞定(适合临时场景)
如果不想额外写函数,也可以用匿名函数在一行内完成转换,虽然可读性稍弱,但胜在不用额外定义变量:
var a uint32 = 0xABFEAA12 l := func() []byte { b0, b1, b2, b3 := Split32(a); return []byte{b0, b1, b2, b3} }()
补充说明
Golang的多返回值设计初衷是让返回值的含义更明确,所以没有提供直接转容器的语法糖,但上面这些方法都能完美满足你的需求。如果是其他返回值类型一致的多返回值函数,也可以套用类似的方式转成slice哦~
内容的提问来源于stack exchange,提问作者SpongeBob
相关产品推荐
相关产品推荐

