В библиотеке redigo есть три доступные функции для сканирования: Scan()
, ScanSlice()
, ScanStruct()
.
ScanStruct()
не может использоваться в вашем случае, потому что структурная схема должна быть явно определена во время компиляции, она не может быть динамической.
Вместо этого используйте Scan()
.Создайте несколько переменных для извлечения значений, затем, после завершения процесса сканирования, поместите все эти переменные в один map
объект.
Пример:
c := pool.Get()
defer c.Close()
values, _ := redis.Values(c.Do("HMGET", urlhost, "s"+urlreq, "c"+urlreq, "t"+urlreq))
var s int = -1
var c []byte
var t int = -1
redis.Scan(values, &s, &c, &t))
qwInfo := map[string]interface{}{
"s"+urlreq: s,
"c"+urlreq: c,
"t"+urlreq: t,
}