登录
首页 >  Golang >  Go问答

处理 go-redis Eval 函数返回数组结果的数据类型

来源:stackoverflow

时间:2024-02-21 16:33:27 204浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《处理 go-redis Eval 函数返回数组结果的数据类型》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

当lua脚本在eval调用期间返回一个表数组时,如何将其转换为go中的[]字符串?

redis cli 按以下格式返回批量回复。

1) val1
2) val2

go-redis eval 函数会将批量条目返回为

["val1", "val2"] 

正确答案


redis 将 lua 表数组返回为 resp2 数组。然后,go 客户端会将该响应映射到 go 本机类型。 go-redis 的相关文档可以在这里找到: lua和 go 类型

简单地说,lua 表确实映射到批量回复,而 go 客户端将其映射到接口片段:[]interface{}

go-redis 脚本 runeval 都返回 *cmd。您可以使用此类型的方法来检索 go 类型的输出。 result 给出 (interface{}, error),您可以键入断言任何您想要的内容,否则 stringslice 是一个方便的 getter,可以立即检索 []string

所以看起来像:

script := redis.NewScript(`
  local foo = {"val1", "val2"}
  return foo
`)

cmd := script.Run(/* parameters */)

i, err := cmd.Result() // (interface, error)
// or
ss, err := cmd.StringSlice() // ([]string, error)

如果这些值实际上并非都是字符串,请使用 slice 获取 []interface{} 切片,然后单独检查元素。

今天关于《处理 go-redis Eval 函数返回数组结果的数据类型》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>