只使用此结构而不使用propertyLoadSaver一切正常。
type Trick struct {
Name string `json:"name" datastore:"-"`
Difficulty int `json:"difficulty"`
}
当只使用负载属性时,它也可以工作。
func (s *Trick) Load(c <-chan datastore.Property) error {
return datastore.LoadStruct(s, c)
}
保存属性会在返回线处导致引起恐慌吗?
func (s *Trick) Save(c chan<- datastore.Property) error {
defer close(c)
return datastore.SaveStruct(s, c)
}
当我尝试这样做时,它不会导致恐慌,但不会保存任何东西?
func (s *Trick) Save(c chan<- datastore.Property) error {
defer close(c)
c <- datastore.Property{
Name: "Difficulty",
Value: s.Difficulty,
}
return nil
}
(使用sdk v1.9.8)
答案 0 :(得分:3)
此处defer close(c)
会引起恐慌
func (s *Trick) Save(c chan<- datastore.Property) error {
defer close(c)
return datastore.SaveStruct(s, c)
}
以下是好的
func (s *Trick) Save(c chan<- datastore.Property) error {
return datastore.SaveStruct(s, c)
}
这也没关系
func (s *Trick) Save(c chan<- datastore.Property) error {
defer close(c)
c <- datastore.Property{
Name: "Difficulty",
Value: int64(s.Difficulty),
}
return nil
}
(请编辑文档以使其更清晰https://developers.google.com/appengine/docs/go/datastore/reference#hdr-The_PropertyLoadSaver_Interface)