我正在玩结构嵌入,并且在保持对嵌入结构的相同引用方面遇到问题。
试试Go Playground 会发现有两个不同的指针地址*strings.Reader。
package main
import (
"fmt"
"strings"
)
type Base struct {
reader *strings.Reader
}
func NewBase() *Base {
r := strings.NewReader("hello")
fmt.Printf("document: %#+v\n\n", &r)
return &Base{r}
}
func (b *Base) Check() {
fmt.Printf("document: %#+v\n\n", &b.reader)
}
type Concrete struct {
*Base
}
func NewConcrete() *Concrete {
return &Concrete{NewBase()}
}
func main() {
c := NewConcrete()
c.Check()
}
为什么这些地址不一样?我该如何解决?
相关分类