我正在移植一个最初用Python编写的现有GAE应用程序。到目前为止,它已经相当不错并且相当容易(虽然它没有没有它的怪癖)。
由于此端口将部署到不同版本的同一GAE应用程序,因此这两个版本将共享相同的数据存储。问题是原始Python应用程序广泛使用db.GeoPt类型。
我在我的一个类型上实现了我自己的自定义PropertyLoadSaver,所以我可以通过反射看看如何在Go中表示db.GeoPt。但显然db.GeoPt的内存布局与Go中的任何东西都不兼容。有谁知道我会怎么做?有没有人这样做过?
这里有一些代码可以让你们更好地了解我在做什么:
func (sS *SomeStruct) Load(c <-chan datastore.Property) error {
for p := range c {
if p.Name == "location" { // "location" is the name of the original db.GeoPt property
v := reflect.ValueOf(p.Value) // If I call v.Kind(), it returns reflect.Invalid
// And yes, I know v is declared and never used :P
}
}
return nil
}
提前谢谢!
答案 0 :(得分:2)
appengine.GeoPoint
appengine/datastore
支持。