请教个问题,代码如下:
```go
package main
import "fmt"
func main() {
a := &A{}
a.update()
fmt.Println(a) //这里为什么打印出来是空对象
}
type A struct {
b string
}
func (a *A) update() {
t := []A{A{b: "1"}, A{b: "2"}, A{b: "3"}} //代表随便三个非空对象
a = &t[0]
fmt.Println(a) //打印出来是非空对象
return
}
```
执行结果
```go
&{1} //打印出来是非空对象
&{} //这里为什么打印出来是空对象
```
楼主的用法好奇怪,个人感觉update内应该是更新a结构体的数据,而不是自己。其次接收者是值传递,外面的a和update里面a的是不一样的地址,如果有c++经验的话,这个应该比较容易理解了,你改变的是指针,不是指针指向的内容
#9
更多评论