go-redis/redis · error
redis: ScanSlice(non-pointer %T)
Error message
redis: ScanSlice(non-pointer %T)
What it means
Error "redis: ScanSlice(non-pointer %T)" thrown in go-redis/redis.
Source
Thrown at internal/proto/scan.go:135
return nil
case encoding.BinaryUnmarshaler:
return v.UnmarshalBinary(b)
case *net.IP:
*v = b
return nil
default:
return fmt.Errorf(
"redis: can't unmarshal %T (consider implementing BinaryUnmarshaler)", v)
}
}
func ScanSlice(data []string, slice interface{}) error {
v := reflect.ValueOf(slice)
if !v.IsValid() {
return fmt.Errorf("redis: ScanSlice(nil)")
}
if v.Kind() != reflect.Ptr {
return fmt.Errorf("redis: ScanSlice(non-pointer %T)", slice)
}
v = v.Elem()
if v.Kind() != reflect.Slice {
return fmt.Errorf("redis: ScanSlice(non-slice %T)", slice)
}
next := makeSliceNextElemFunc(v)
for i, s := range data {
elem := next()
if err := Scan([]byte(s), elem.Addr().Interface()); err != nil {
err = fmt.Errorf("redis: ScanSlice index=%d value=%q failed: %w", i, s, err)
return err
}
}
return nil
}
View on GitHub (pinned to 36d97525cd)
Solutions
- Pass a pointer to a slice (e.g. &dst) to ScanSlice
- Take the address of the destination slice
When it happens
Trigger: Thrown at internal/proto/scan.go:135 when the library encounters an invalid state.
Common situations: Document and check pointer requirements in wrapper helpers.
AI-assisted analysis of go-redis/redis@36d97525cd (2026-08-06).
Data as JSON: /data/errors/8d084545cb295b94.json.
Report an issue: GitHub.