Google app engine Go有什么方法可以轻松地将数据转换为字节或字符串

Google app engine Go有什么方法可以轻松地将数据转换为字节或字符串,google-app-engine,serialization,data-structures,memcached,go,Google App Engine,Serialization,Data Structures,Memcached,Go,我一直在使用Google App Engine Go SDK开发一些应用程序,这些应用程序使用Memcache作为从数据存储加载数据的缓冲区。由于Memcache只能将数据存储为[]字节,我经常发现自己创建了将各种结构编码为字符串的函数,以及反转过程的函数。不用说,当我需要做这类事情5次以上时,这是相当乏味的 有没有一种简单的方法可以将任何可以存储在数据存储中的任意结构转换为[]字节,以便将其存储在Memcache中,然后在不必为GAE Golang中的各种结构创建自定义代码的情况下将其加载回去

我一直在使用Google App Engine Go SDK开发一些应用程序,这些应用程序使用Memcache作为从数据存储加载数据的缓冲区。由于Memcache只能将数据存储为
[]字节
,我经常发现自己创建了将各种结构编码为字符串的函数,以及反转过程的函数。不用说,当我需要做这类事情5次以上时,这是相当乏味的


有没有一种简单的方法可以将任何可以存储在数据存储中的任意结构转换为
[]字节
,以便将其存储在Memcache中,然后在不必为GAE Golang中的各种结构创建自定义代码的情况下将其加载回去?

或者可以将任意数据类型转换为[]给定特定规则的字节片适用于正在编码的数据结构。您可能希望其中一个gob将编码为更小的大小,但如果需要的话,json更容易与其他语言共享。

我发现自己也需要同样的东西。因此,我创建了一个名为:

|

获取github.com/scotch/aego/ds

它使用与
“appengine/datastore”
相同的API,因此它将作为替代品使用

import "github.com/scotch/aego/v1/ds"

u = &User{Name: "Bob"}
key := datastore.NewKey(c, "User", "bob", 0, nil)
key, err := ds.Put(c, key, u)

u = new(User)
err = ds.Get(c, key, u)
默认情况下,它会将所有
Put
s和
Get
s缓存到memcache,但您可以通过调用以下方法来修改此行为:

该方法采用一个字符串,表示
种类
和3
bool
-
userDatastore
usemcache
useMemory
。传递
true
值将导致
AEgo/ds
将记录保存到该存储。
内存
存储区对于不希望更改的记录很有用,但如果运行多个实例,则可能包含过时数据

支持的方法包括:

Put
PutMulti
Get
GetMulti
Delete
DeleteMulti
AllocateIDs
注意:当前仅使用
Get
进行兑现
GetMulti
从数据存储中提取数据

AEGo/ds
是一项正在进行的工作,但是代码经过了很好的测试。如有任何反馈,将不胜感激

为了回答您的问题,这里是我如何使用memcache持久性的

Put
PutMulti
Get
GetMulti
Delete
DeleteMulti
AllocateIDs