golang slice无法添加指针
在Go语言中,指针是一种存储变量内存地址的数据类型。当你有一个指向int
的指针,比如timePtr *int
,你可以通过*timePtr
来访问和修改指针指向的值。然而,指针本身是一个值类型,它存储的是变量的内存地址,而不是变量本身。
在你提供的add
函数中:
1 |
|
timePtr
是一个指向int
的指针。虽然你可以通过*timePtr
来间接修改它所指向的int
值,但是你不能使用这个指针来创建一个关于*int
的切片。原因如下:
指针的值是地址:
timePtr
变量存储的是currentTime
变量的内存地址,而不是currentTime
的值。切片是基于数组的,它们需要一个具体的数据集合来创建。切片的元素类型:切片的元素类型是固定的,并且是在创建时确定的。你不能创建一个关于
*int
的切片,因为切片的元素类型是int
,而不是*int
(指向int
的指针)。切片创建语法:创建切片通常需要一个数组或另一个切片作为基础,或者使用
make
函数指定长度和容量。例如:1
2
3var arr [5]int
slice1 := arr[:] // 基于数组的切片
slice2 := make([]int, 5, 10) // 使用make创建切片
如果你的目的是创建一个记录时间变化历史的切片,你需要一个独立的切片来存储这些时间值。你可以在main
函数中声明这样一个切片,并在CRUD操作中更新它:
1 |
|
在这个例子中,history
是一个切片,用于存储时间点的历史记录。每次调用add
函数时,我们不仅更新currentTime
,还将新的时间点添加到history
切片中。注意,由于切片是引用类型,我们传递&history
来允许函数修改原始切片。
golang slice无法添加指针
https://leiqi.top/2024-05-02-247b79126fb5.html