gpt4 book ai didi

go - golang推荐中的 slice 合并

转载 作者:IT王子 更新时间:2023-10-29 01:19:38 31 4
gpt4 key购买 nike

有没有办法让这个 golang 代码更短?

func MergeSlices(s1 []float32, s2 []int32) []int {
var slice []int
for i := range s1 {
slice = append(slice, int(s1[i]))
}
for i := range s2 {
slice = append(slice, int(s2[i]))
}
return slice
}

最佳答案

您无法消除将每个元素单独转换为 int 的循环,因为您无法转换不同元素类型的整个 slice 。有关解释,请参阅此问题:Type converting slices of interfaces in go

您最多可以使用命名结果类型,以及具有 2 个迭代值的 for range,您可以通过将第一个(索引)分配给 blank identifier 来省略第一个(索引) ,第二个将是值:

func MergeSlices(s1 []float32, s2 []int32) (s []int) {
for _, v := range s1 {
s = append(s, int(v))
}
for _, v := range s2 {
s = append(s, int(v))
}
return
}

但是要知道,您的代码按原样是没问题的。我的代码不是总要遵循的东西,它是为了回答你的问题:如何让你的代码更短。如果您想改进您的代码,您可以从查看其性能开始,或者甚至重构您的代码,以免最终需要合并不同类型的 slice 。

关于go - golang推荐中的 slice 合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43933824/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com