I am redigo per connettersi da Vai a un database redis. Come posso convertire un tipo di []interface {}{[]byte{} []byte{}}
in un insieme di stringhe? In questo caso mi piacerebbe ottenere le due stringhe Hello
e World
.redigo, SMEMBERS, come ottenere stringhe
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main() {
c, err := redis.Dial("tcp", ":6379")
defer c.Close()
if err != nil {
fmt.Println(err)
}
c.Send("SADD", "myset", "Hello")
c.Send("SADD", "myset", "World")
c.Flush()
c.Receive()
c.Receive()
err = c.Send("SMEMBERS", "myset")
if err != nil {
fmt.Println(err)
}
c.Flush()
// both give the same return value!?!?
// reply, err := c.Receive()
reply, err := redis.MultiBulk(c.Receive())
if err != nil {
fmt.Println(err)
}
fmt.Printf("%#v\n", reply)
// $ go run main.go
// []interface {}{[]byte{0x57, 0x6f, 0x72, 0x6c, 0x64}, []byte{0x48, 0x65, 0x6c, 0x6c, 0x6f}}
// How do I get 'Hello' and 'World' from this data?
}
Viene visualizzato il seguente errore: 'redigo: tipo imprevisto per String, ottenuto tipo [] interface {}' dalla riga sopra ... – topskip
@topskip: Probabilmente non è necessario dirlo poiché questa domanda ha già una risposta, ma l'errore di tipo non esaminato è probabilmente dovuto al fatto che stai inserendo una porzione di interfacce anziché solo l'interfaccia. Se si fosse enumerato attraverso la slice of interface e utilizzato redis.String, probabilmente funzionerebbe correttamente. – bleakgadfly