这段代码:
package main
import (
"fmt"
"encoding/json"
)
type State struct { Foo string }
type Handler struct { state State }
func (handler Handler) State() *State { return &handler.state }
func main() {
input := `{"Foo": "bar"}`
handler := Handler{}
state := handler.State()
json.Unmarshal([]byte(input), state)
fmt.Printf("%v\n", state)
fmt.Printf("%v\n", handler.state)
}
印刷
&{bar}
{}
(自己看)
这让我感到困惑:handle.State()返回 的地址handler.state,那么怎么可能state(这是&handler.state)并handler.state最终包含不同的东西(一个是空的,另一个不是)?
如果我更改state := handler.State()为state := &handler.state,那么它会按我期望的方式工作。
我在这里错过了什么?
MYYA
相关分类