duanjing1276 2014-08-02 21:21
浏览 14
已采纳

我的资料储存库PropertyLoadSaver无法在golang中运作

The documentation I used (https://developers.google.com/appengine/docs/go/datastore/reference#hdr-The_PropertyLoadSaver_Interface)

Just using this struct without using the propertyLoadSaver everything works.

type Trick struct {
    Name string `json:"name" datastore:"-"`
    Difficulty int `json:"difficulty"`
}

When only using a load property it also works.

func (s *Trick) Load(c <-chan datastore.Property) error {
    return datastore.LoadStruct(s, c)
}

The save property results into a appengine panic at the return line?

func (s *Trick) Save(c chan<- datastore.Property) error {
    defer close(c)
    return datastore.SaveStruct(s, c)
}

When I try this instead it will not result into a panic but does not save anything?

func (s *Trick) Save(c chan<- datastore.Property) error {
    defer close(c)
    c <- datastore.Property{
        Name:  "Difficulty",
        Value: s.Difficulty,
    }
    return nil
}

(Using sdk v1.9.8)

  • 写回答

1条回答 默认 最新

  • dsn1327 2014-08-02 22:24
    关注

    Here defer close(c) will cause a panic

    func (s *Trick) Save(c chan<- datastore.Property) error {
        defer close(c)
        return datastore.SaveStruct(s, c)
    }
    

    The following is ok

    func (s *Trick) Save(c chan<- datastore.Property) error {
        return datastore.SaveStruct(s, c)
    }
    

    This is also ok

    func (s *Trick) Save(c chan<- datastore.Property) error {
        defer close(c)
        c <- datastore.Property{
            Name:  "Difficulty",
            Value: int64(s.Difficulty),
        }
        return nil
    }
    

    (please edit the documentation to make this more clear https://developers.google.com/appengine/docs/go/datastore/reference#hdr-The_PropertyLoadSaver_Interface)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算