1 Star 0 Fork 2

王布衣 / num

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
align.go 826 Bytes
一键复制 编辑 原始数据 按行查看 历史
王布衣 提交于 2024-02-18 12:07 . 优化Align函数
package num
// Align data alignment
//
// a 通常是默认值
func Align[E BaseType](x []E, a E, n int) []E {
return v2Align[E](x, a, n)
}
func v1Align[E BaseType](x []E, a E, length int) []E {
n := len(x)
if n == length {
return x
}
if n > length {
// 截断, 需要注意T类型的变化, 如果是指针, 需要防止内存泄露
d := x[0:length]
// 多余的元素置为nil
//for i:= n; i < length; i++ {
// x[i] = nil
//}
return d
}
// 扩展内存
d := make([]E, length)
m := copy(d, x)
// m 和 n 应该是相等
for i := m; i < length; i++ {
d[i] = a
}
return d
}
func v2Align[E BaseType](x []E, a E, n int) []E {
m := len(x)
if m == n {
return x
}
if m > n {
// 截断
return x[:n]
}
// 扩展内存
d := make([]E, n)
copy(d, x)
RepeatInto(d[m:], a, n-m)
return d
}
Go
1
https://gitee.com/quant1x/num.git
git@gitee.com:quant1x/num.git
quant1x
num
num
v0.3.1

搜索帮助