初始化嵌入结构时的指针差异

我正在玩结构嵌入,并且在保持对嵌入结构的相同引用方面遇到问题。


试试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()

}

为什么这些地址不一样?我该如何解决?


交互式爱情
浏览 171回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go