如何将一种数字类型的切片转换为另一种类型
我正在尝试使用Go语言,并且对它很陌生。我已经成功地完成了教程,现在正在编写一个小程序来评估其通常执行的操作类型的性能。我有一个很长的float32类型切片,需要将其尽可能有效地转换为float64类型的切片。除了遍历slice的元素并通过output
[i] = float64(data
[i])显式转换单个元素的类型外,还有没有一种方法可以用来转换整个slice而无需迭代?我曾尝试寻找解决方案,但未发现任何直接相关的内容。
-
Go的级别很低,这意味着迭代切片 是
最有效的方法。其他语言可能具有内置功能,但它们所做的只是遍历切片,没有迭代就无法做到。但是有一些技巧,特别是使用范围,并避免对切片进行索引,因为越界检查会产生开销。这将是最有效的:func convertTo64(ar []float32) []float64 { newar := make([]float64, len(ar)) var v float32 var i int for i, v = range ar { newar[i] = float64(v) } return newar } slice32 := make([]float32, 1000) slice64 := convertTo64(slice32)
请注意,
:=
在范围循环中使用in效率不高,因为在当前版本的Go中,变量每次都被丢弃并重新创建,而不是被重用。使用range
代替for i=0; i<n; i++
会更有效,因为它可以节省的边界检查ar
。
-
Java:如何将变量从一种类型动态转换为另一种类型?
2021-02-02 关注 0 浏览110 1答案
-
将BufferedImage转换为另一种类型
2021-01-30 关注 0 浏览153 1答案
-
一种将一种类型的切片转换为等效类型的切片的优雅方法?
2021-02-01 关注 0 浏览76 1答案
-
为什么我不能在Go中用一种类型的切片替代另一种类型?
2021-02-01 关注 0 浏览81 1答案
-
如何将一种数据类型的所有Sql列更改为另一种
2021-05-10 关注 0 浏览109 1答案
-
将数组中的多个字节转换为Go中的另一种类型
2021-02-01 关注 0 浏览117 1答案
-
SQL中用于将某种数据类型的表达式显式转换为另一种数据类型的函数是
2022-03-03 关注 0 浏览63 1答案
-
如何检测类型是否为另一种通用类型
2021-02-02 关注 0 浏览101 1答案
-
振荡分为两种类型:一种是______,另一种是______
2022-05-22 关注 0 浏览18 1答案
-
将谓词的表达式树突变为目标另一种类型
2021-02-02 关注 0 浏览80 1答案