在 Golang 中将 interface{} 转换为 []string

我是 GO 语言的新手,我试图从一个返回两个字符串的函数中获取一个值,即 [str1, str2]


 ret, err := fun1(....)

而函数的原型是


func fun1(...) (interface{}, error)

我打印ret,它是


[[57 57 56 56] [97 100 98 49 57 55 102 98 49 101 57 48 52 98 102 56 55 102 52 56 57 57 55 54 49 55 101 57 49 100 98 49]]

看起来像类型[][]uint8,所以,我试过这种方式


    v, _ := ret.([][]uint8)

    str1, _ := strconv.Atoi(string(v[0]))

    str2, _ := strconv.Atoi(string(v[1]))

它失败了,v 是 []


我也试过:


   v, _ := ret.([]string)

没有改变


如何解决这个问题?任何帮助将不胜感激 :)


PS:我调试发现第一个字符串是 "9988"


吃鸡游戏
浏览 201回答 2
2回答

米琪卡哇伊

我从你的其他问题中知道你在问 Redigo。使用redis.Strings函数从服务器获取作为 []string 的回复:s, err := redis.Strings(fun1(....))变量s是一个 [] 字符串。有关更多信息,请参阅有关回复助手的文档。

翻翻过去那场雪

你有一片切片,你需要将每个切片转换成你想要的。假设它们是字节并且您想打印切片中的每个字符串,然后:ret, err := fun1(....)if err != nil {     panic(err)}for idx, val := range ret.([][]byte) {     fmt.Println("At idx", idx, "string:", string(val))}以上数据示例:https : //play.golang.org/p/VsZhSaGmQk
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go