Этот код:
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
, то это сработает так, как я ожидаю.
Что мне здесь не хватает?