我正在撰写Google App Engine Golang应用程序。我想拥有一个struct
私有变量,只能通过适当的函数设置,例如:
type Foo struct {
bar string
}
func (f *Foo) SetBar(b string) {
f.bar = "BAR: "+b
}
我希望能够将这些数据保存在数据存储区中。但是,看起来数据存储区不会保存私有变量。
如何在数据存储中存储私有变量?
答案 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
}
缺点是您需要手动加载/保存所有属性,因为您无法使用数据存储区方法。