You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

go-redis Eval调用Lua返回数组如何转为Go的[]string类型?

在Go中处理go-redis Eval返回的Lua数组为[]string类型

go-redis的Eval函数不会直接返回[]string类型结果。当Lua脚本返回数组形式的table时,Eval会返回一个[]interface{}类型的切片,切片内每个元素对应Lua数组里的字符串值,和Redis CLI显示的1) val1这类批量回复一一对应。

要将其转换为[]string,可通过类型断言加遍历实现,示例代码如下:

package main

import (
    "errors"
    "github.com/go-redis/redis/v8"
    "context"
)

func getEvalResultAsStrings(ctx context.Context, client *redis.Client) ([]string, error) {
    // 执行返回数组的Lua脚本示例
    res, err := client.Eval(ctx, `return {"val1", "val2"}`, []string{}).Result()
    if err != nil {
        return nil, err
    }

    // 将结果断言为[]interface{}
    arr, ok := res.([]interface{})
    if !ok {
        return nil, errors.New("响应不是数组类型")
    }

    // 转换为[]string
    strArr := make([]string, len(arr))
    for i, item := range arr {
        strItem, ok := item.(string)
        if !ok {
            return nil, errors.New("数组元素不是字符串类型")
        }
        strArr[i] = strItem
    }

    return strArr, nil
}

内容的提问来源于stack exchange,提问作者TruBlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:20:27