Go语言数组元素取绝对值 Go语言切片绝对值转换代码

admin 百科 20
Go语言中无内置取绝对值函数,整型切片推荐手动遍历判断符号取反,避免math.Abs的float64转换开销,适用于[]int、[]int32、[]int64等,性能更优。

Go语言数组元素取绝对值 Go语言切片绝对值转换代码-第1张图片-佛山资讯网

Go语言中没有内置的数组或切片“取绝对值”函数,需手动遍历并调用 math.Abs(注意:它只接受 float64,对整数需先转换);若处理整型切片,更常用的是直接判断符号后取反,避免浮点转换开销。

整型切片转绝对值(推荐,高效无类型转换)

适用于 []int[]int32[]int64 等。不依赖 math 包,避免 float 转换,性能更好。

func absIntSlice(s []int) {
    for i := range s {
        if s[i] < 0 {
            s[i] = -s[i]
        }
    }
}

// 使用示例
nums := []int{-3, 0, 5, -7, 2}
absIntSlice(nums)
// nums 变为 [3 0 5 7 2]

登录后复制

浮点型切片转绝对值(用 math.Abs)

适用于 []float64[]float32。注意 math.Abs 参数是 float64float32 需显式转成 float64 再转回(如需保持类型)。

  • []float64

import "math"

func absFloat64Slice(s []float64) {
    for i := range s {
        s[i] = math.Abs(s[i])
    }
}

登录后复制

  • []float32(保留原类型):

func absFloat32Slice(s []float32) {
    for i := range s {
        s[i] = float32(math.Abs(float64(s[i])))
    }
}

登录后复制

返回新切片(不修改原数据)

若需保持原切片不变,可封装为返回新切片的函数:

立即学习“go语言免费学习笔记(深入)”;

标签: go golang go语言 ssl ai

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~