go语言interface{}类型转string类型

go interface{}类型转string类型

起因

package main

import (
	"context"
	"fmt"
	"math/rand"
	"reflect"
	"time"

	"github.com/go-redis/redis/v8"
)

var ctx = context.Background()

func main() {
	rdb := redis.NewClient(&redis.Options{
		Addr:     "xxx.xx.xxx.xx:6379",//请换成自己的ip地址
		Password: "", // no password set
		DB:       0,  // use default DB
	})

	_, err := rdb.Ping(ctx).Result()
	if err != nil {
		panic(err)
	}
	rand.Seed(time.Now().UnixNano())
	getAllData(rdb)
}
func getAllData(rdb *redis.Client) {
	val, err := rdb.Do(ctx, "keys", "*").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println(reflect.TypeOf(val))
	fmt.Println(val)
}

在这里插入图片描述
从redis拿到的数据是一个interface{}类型,但当我想遍历这个类型时却报错了
在这里插入图片描述
cannot range over val (type interface {})
说不能遍历这个类型
把它强制转换成[]interface{}就可以遍历了
在这里插入图片描述
但这里遍历出来的v还是interface{}类型

解决:使用fmt.Sprintf函数

	for k, v := range val.([]interface{}) {
		str := fmt.Sprintf("%v", v)
		fmt.Println(k, str)
	}

这样就成功转为string类型了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值