错误 - redigo.Scan:无法从 Redis 批量字符串转换为 *string
Error - redigo.Scan: Cannot convert from Redis bulk string to *string
我有一个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: cannot assign to dest 0: cannot convert from Redis bulk
string to *string
请告诉我我做错了什么?
doc 中说 []byte
是批量字符串的类型,而不是 *string
。您在这里有两个选择:
- 将特定字段类型更改为
[]byte
- 或在扫描时使用
[]byte
类型的临时变量,然后在检索到数据后将其存储到结构的字段
The values pointed at by dest must be an integer, float, boolean, string, []byte, interface{} or slices of these types.
应用程序将指向 *string
的指针传递给函数。 *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)
我有一个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: cannot assign to dest 0: cannot convert from Redis bulk string to *string
请告诉我我做错了什么?
doc 中说 []byte
是批量字符串的类型,而不是 *string
。您在这里有两个选择:
- 将特定字段类型更改为
[]byte
- 或在扫描时使用
[]byte
类型的临时变量,然后在检索到数据后将其存储到结构的字段
The values pointed at by dest must be an integer, float, boolean, string, []byte, interface{} or slices of these types.
应用程序将指向 *string
的指针传递给函数。 *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)