如何从嵌套函数修改结构布尔值?

时间:2018-12-26 19:14:16

标签: go struct

从嵌套函数内部设置结构不起作用。

我已经尝试过文档中的示例:https://play.golang.org/p/Pw9f20zwja

type myStruct struct {
    abrakadabra bool 
}

func (f *ChangeMe) SetName(abrakadabra bool) {
    f.abrakadabra = true
}

func something() {
    var flag ChangeMe
    f := new(ChangeMe)

    copy := func(r io.ReadCloser, w io.WriteCloser) {
        //...some code..

        if err != nil { 
            f.SetName(true)
            log.Println(flag.abrakadabra)
        }
    } 

在日志打印中-abrakadabra布尔值保持为false(初始值),为什么不更改为true?

1 个答案:

答案 0 :(得分:2)

您正在f上运行SetName,然后从flag中打印值。 f和flag是ChangeMe类型的两个不同值。

f.SetName(true)
log.Println(f.abrakadabra)

flag.SetName(true)
log.Println(flag.abrakadabra)