本文介绍了不能编组,(实现编码.BinaryMarshaler)。具有多个对象的Go-redis SDD的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一段代码,我试图在其中向redis集中添加一个数组,但出现错误。
package main
import (
"encoding/json"
"fmt"
"github.com/go-redis/redis"
)
type Info struct {
Name string
Age int
}
func (i *Info) MarshalBinary() ([]byte, error) {
return json.Marshal(i)
}
func main() {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "",
DB: 0,
ReadTimeout: -1,
})
pong, err := client.Ping().Result()
fmt.Print(pong, err)
infos := [2]Info{
{
Name: "tom",
Age: 20,
},
{
Name: "john doe",
Age: 30,
},
}
pipe := client.Pipeline()
pipe.Del("testing_set")
// also tried this
// pipe.SAdd("testing_set", []interface{}{infos[0], infos[1]})
pipe.SAdd("testing_set", infos)
_, err = pipe.Exec()
fmt.Println(err)
}
我收到错误can't marshal [2]main.Info (implement encoding.BinaryMarshaler)
[]byte
,并将[][]byte...
传递给SAdd
,但出现了相同的错误。我将如何在偶像意义上做到这一点?推荐答案
marshalBinary()方法应如下
func (i Info) MarshalBinary() ([]byte, error) {
return json.Marshal(i)
}
注意:信息而不是*信息
这篇关于不能编组,(实现编码.BinaryMarshaler)。具有多个对象的Go-redis SDD的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!