我有一个struct这样的type User struct { Nickname *string `json:"nickname"` Phone *string `json:"phone"`}HMSET值用命令放在redis中。(值可以为nil)现在我正在尝试将scan值转换为一个结构:values, err := redis.Values(Cache.Do("HMGET", "key", "nickname", "phone" )var usr User_, err := redis.Scan(values, &usr.Nickname, &usr.Phone)但我得到一个错误redigo.Scan:无法分配到 dest 0:无法从 Redis 批量字符串转换为 *string请告诉我我做错了什么?
2 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
扫描文档说:
dest 指向的值必须是整数、浮点数、布尔值、字符串、[]byte、interface{} 或这些类型的切片。
应用程序将指向 a 的指针传递*string给函数。A*string不是受支持的类型之一。
有两种方法可以解决此问题。第一个是分配string值并将指向分配string值的指针传递给 Scan:
usr := User{Nickname: new(string), Phone: new(string)}
_, err := redis.Scan(values, usr.Nickname, usr.Phone)
第二种方法是将结构字段的类型更改为string:
type User struct {
Nickname string `json:"nickname"`
Phone string `json:"phone"`
}
...
var usr User
_, err := redis.Scan(values, &usr.Nickname, &usr.Phone)
- 2 回答
- 0 关注
- 269 浏览
添加回答
举报
0/150
提交
取消