私は "RPUSH"コマンドで私の赤いベースのオブジェクトをプッシュしています。redigoとgobゴブデータのスライスを取得する方法
// object is of type interface
var network bytes.Buffer
gob.NewEncoder(&network)
enc.Encode(object /* interface{} */)
redis.String(d.Conn.Do("RPUSH", "objects", network.String()))
Redigo私が期待していることは、ゴブエンコードされたすべてのデータ構造をプッシュしています。
今、私はそれらを盗んしようとしている:
sall, _ := redis.Strings(d.Conn.Do("LRANGE", "todos", "0", "-1"))
fmt.Printf("%T", sall) // type []string as expected
// At this point, I have no idea if I should store the data in a buffer, or convert it directly as bytes. actually, here I'm lost
var network bytes.Buffer
var object []interface{}
dec := gob.NewDecoder(network)
err := dec.Decode(inout)
fmt.Printf("%v", err) // decode error:EOF
ゴブ-DECODするためにそれらを最良の方法は何ですか?私はそれらをインタフェース{}のスライスとして戻したいと思っています。しかし、私のオブジェクトがゴブデータとしてエンコードされていても。彼らはredisの方法でプッシュされるので、それはゴブのポイントビューからスライスとして考えることができますか?
他のリストを反復して1つずつデコードすることができます。しかし、私は効率について自信がありません。私はgobがその方法でコード化されたスライス構造を望んでいると仮定しています。だから私の質問です:データ構造のコレクションとして効率的にゴブデータの私のスライスをデコードするためのトリックはありますか?または、データ構造を別の方法で保存する必要があります(RPUSHを使用してデータを格納すると非アトミック操作を防ぐことができると仮定しています)。
はありがとうようなコードを記述します。 –