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

我已经尝试过文档中的示例: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?

最佳答案

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

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

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

关于go - 如何从嵌套函数修改struct boolean?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53936182/

10-12 00:16