请教个问题,代码如下:
```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} //打印出来是非空对象
&{} //这里为什么打印出来是空对象
```
正确代码:(跟你说了变量t是栈上临时变量)
package main
import "fmt"
func main() {
a := &A{}
a.update()
fmt.Printf("%v\n", a)
}
type A struct {
b string
}
func (a *A) update() {
t := []A{A{b: "1"}, A{b: "2"}, A{b: "3"}} //代表随便三个非空对象
a.b = t[0].b
fmt.Printf("update %v\n", a) //打印出来是非空对象
return
}
#7
更多评论