从嵌套函数内部设置结构不起作用。
我已经尝试过文档中的示例: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?
答案 0 :(得分:2)
您正在f上运行SetName,然后从flag中打印值。 f和flag是ChangeMe类型的两个不同值。
f.SetName(true)
log.Println(f.abrakadabra)
或
flag.SetName(true)
log.Println(flag.abrakadabra)