是否可以将Python GAE db.GeoPt移植到Go类型?

时间:2014-03-27 03:08:28

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

我正在移植一个最初用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
}

提前谢谢!

1 个答案:

答案 0 :(得分:2)

在{1.9} App Engine版本中添加了appengine.GeoPoint appengine/datastore支持。