众所周知go如果初始化都会自带零值效果
比如一个切片我们在传送过程中,如果被占位且不想传值为零值
我们就需要使用*
定义如下:
slice = make([]float64, 5)
这样会输出:
[0,0,0,0,0]
定义如下:
slice = make([]*float64, 5)
这样会输出:
[ null, null, null, null, null]
出现头插和尾插的情况是因为我们定义带长度的一个切片
如: slice := make([]*float64, 64)
package main
import "fmt"
func main() {
// 创建一个长度为 64 的 float64 切片
slice := make([]*float64, 64)
// 要插入的元素
newElement := 42.0
// 在切片开头插入元素
slice = append(slice, newElement)
// 打印切片
fmt.Println(slice)
}
输出如下(示意,非正确输出
):
[ …null,null,null,null,null,null,null,42.0]
尾插需要和我们正常的append有一些区别
slice = append([]float64{newElement}, slice...)
package main
import "fmt"
func main() {
// 创建一个长度为 64 的 float64 切片
slice := make([]*float64, 64)
// 要插入的元素
newElement := 42.0
// 在切片开头插入元素
slice = append([]float64{newElement}, slice...)
// 打印切片
fmt.Println(slice)
}
输出如下(示意,非正确输出
):
[
101.777,
101.777,
101.778,
101.778,
101.778,
101.778,
101.778,
101.779,
101.779,
101.779,
101.779,
101.78,
101.78,
101.781,
101.781,
101.782,
80,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
]