请教个问题,代码如下:
```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 重新赋值, 不会修改 main函数中的指针a, 所有在main函数中打印指针a还是初始的零值.
update方法的原型是这样的:
```go
A.update(a *A)
```
#8
更多评论