GAE Go - 如何将私有变量放入数据存储区?

时间:2014-07-10 22:48:44

标签: google-app-engine go google-cloud-datastore private

我正在撰写Google App Engine Golang应用程序。我想拥有一个struct私有变量,只能通过适当的函数设置,例如:

type Foo struct {
    bar string
}

func (f *Foo) SetBar(b string) {
    f.bar = "BAR: "+b
}

我希望能够将这些数据保存在数据存储区中。但是,看起来数据存储区不会保存私有变量。

如何在数据存储中存储私有变量?

1 个答案:

答案 0 :(得分:2)

如果您的类型实现PropertyLoadSaver interface

,则可以
func (f *Foo) Save (c chan<- datastore.Property) error {
    defer close(c)

    c <- datastore.Property {
        Name: "bar",
        Value: f.bar,
    }

    return nil
}

func (f *Foo) Load(c <-chan datastore.Property) error {
    for property := range c {
        switch property.Name {
        case "bar":
            f.bar = property.Value.(string)
        }
    }
    return nil
}

缺点是您需要手动加载/保存所有属性,因为您无法使用数据存储区方法。