• 欢迎访问1024小神,一个只会Python的程序猿不是一个好司机
  • 有什么想对我说的可以在留言板里给我留言哦~
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏1024小神吧

Go使用反射和断言判断数据类型并转化

Golang Jason 3周前 (05-31) 20次浏览 0个评论
package main

import (
	"fmt"
	"reflect"
)

func ToBusinessMaps(gross ...interface{}) {
	for _, v := range gross {
		// 第一种方法,用断言
		if ilist, ok := v.([]int64);ok{
			fmt.Println(ilist)
			for _, vi := range ilist { // 断言成功,再遍历
				fmt.Println(vi)
			}
		}else if slist,ok:=v.([]string);ok{
			fmt.Println(slist)
		}

		// 第二种方法,用反射
		fmt.Println("使用反射遍历里面的值:")
		kind := reflect.TypeOf(v).Kind()  // 判断他的类型
		if kind == reflect.Slice {
			fmt.Println("是切片类型")
			values := reflect.ValueOf(v)  // 从类型中获取到值
			for i := 0; i < values.Len(); i++ {  // 遍历值
				fmt.Println("获取到切片中的值是:", values.Index(i))
			}
		}

	}
}

func OneSliec(sli interface{}) {
	typeOf := reflect.TypeOf(sli).Kind()
	switch typeOf {
	case reflect.Slice:
		fmt.Println("传过来的是切片")
		of := reflect.ValueOf(sli)
		// 如果取出来的值,
		for i := 0; i < of.Len(); i++ {
			fmt.Println(of.Index(i))
		}
	case reflect.String:
		fmt.Println("传过来的是string")
	}
}


func main() {
	var s1 = []int64{1, 2, 3}
	var s2 = []string{"4", "5", "6"}
	ToBusinessMaps(s1, s2)
	OneSliec(s1)

	// 制造一个map
	fmt.Println("---------------")
	var storeM = make(map[string]string, 2)
	storeM["name"] = "dfaadfadf"
	storeM["code"] = "2352352"
	storeM["address"] = "alualfja"
	storeM["phone"] = "adfasfasf"
	for s, v := range storeM {
		fmt.Println(s, v)
	}

}


如有失效,请留言告知丨转载请注明原文链接:Go使用反射和断言判断数据类型并转化
点赞 (0)

您必须 登录 才能发表评论!