Jestem redigo, aby połączyć się z Idź do bazy danych redis. Jak przekonwertować typ []interface {}{[]byte{} []byte{}}
na zestaw ciągów znaków? W tym przypadku chciałbym uzyskać dwa ciągi znaków: Hello
i World
.redigo, SMEMBERS, czyli jak uzyskać ciągi znaków
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?
}
Pojawia się następujący błąd: 'redigo: nieoczekiwany typ dla String, otrzymałem typ [] interface {}' z twojej linii powyżej ... – topskip
@topskip: Prawdopodobnie nie trzeba tego mówić, ponieważ to pytanie już ma odpowiedź, ale nieoczekiwany błąd typu wynika prawdopodobnie z tego, że wstawiasz kawałek interfejsu zamiast samego interfejsu. Gdybyś wyliczył przez kawałek interfejsów i użył redis. Tring prawdopodobnie by działał dobrze. – bleakgadfly