1 回答

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
問(wèn)題是您已經(jīng)Get使用結(jié)構(gòu)接收器定義了該方法,而不是在指針上。這意味著當(dāng)您返回時(shí),您將&s.data獲得接收者字段的地址,而不是來(lái)自原始結(jié)構(gòu)。您可以通過(guò)使用指針接收器簡(jiǎn)單地解決此問(wèn)題:
func (s *sample) Get() *[]float64{
return &s.data
}
這是一個(gè)完整的可運(yùn)行示例(https://play.golang.org/p/AIj8QOYfx85)
package main
import "fmt"
type sample struct {
data []float64
}
func (s *sample) Get() *[]float64 {
return &s.data
}
func main() {
example := sample{[]float64{1, 2, 3}}
p := example.Get()
*p = append(*p, 4)
fmt.Println(example.Get())
}
- 1 回答
- 0 關(guān)注
- 108 瀏覽
添加回答
舉報(bào)