有没有办法让这个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
}
Run Code Online (Sandbox Code Playgroud)
您无法消除将每个元素int单独转换的循环,因为您无法转换不同元素类型的整个切片.有关解释,请参阅此问题:在go中键入转换接口切片
您可以做的最多是使用命名结果类型,for range使用2个迭代值,您可以通过将第一个(索引)分配给空白标识符来省略第一个(索引),第二个将是值:
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
}
Run Code Online (Sandbox Code Playgroud)
但要知道你的代码是正常的.我的代码并不总是遵循,它是回答你的问题:如何缩短你的代码.如果您想改进代码,可以从查看其性能开始,甚至重构代码,最终不需要合并不同类型的切片.
| 归档时间: |
|
| 查看次数: |
1061 次 |
| 最近记录: |