我有一个结构,说:
type sample struct{
data []float64
}
现在,我声明一个方法:
func (s sample) Get() *[]float64{
return &s.data
}
我试图通过我通过 Get() 获得的指针附加到这个切片
func main(){
example := sample{[]float64{1,2,3}}
//Here I will append:
pointerToArray := example.Get()
*pointerToArray = append(*pointerToArray, 4)
fmt.Println(example.Get()) // still shows only &{1,2,3}
}
我对为什么会发生这种情况有一个大致的了解:函数 Get 正在返回其本地范围的地址,我通过将结构本身更改为来修复它
type sample struct{
data *[]float64
}
代码返回预期的&{1,2,3,4}
现在,对于我的问题:无论如何,是否可以通过 getter 方法获取指向结构中字段的真实指针,而不直接在结构中使用指针字段?
猛跑小猪
相关分类