Go语⾔从interface获取数组切⽚指定下标中结构体的某⼀字段
主要通过反射进⾏实现,,EL表达式获取数组和切⽚的下标数据也是通过该⽅式实现。
先定义⼀个struct
type Order struct{
name string
age int
}
定义⼀个场景,有⼀个test的字段,类型是interface{},接收⼀个Order对象的切⽚。现在是想获取Order切⽚下标为1的name的值。
orders :=make([]Order,2)
orders[0]= Order{name:"lisi", age:18}
orders[1]= Order{name:"wang", age:24}
var test interface{}
test = orders
//获取orders切⽚下标为1的数据
index := reflect.ValueOf(test).Index(1)
//取得Order对象类型
orderType := index.Type()
//取得name属性
nameFile,_:= orderType.FieldByName("name")
//取得name的类型
nameType := nameFile.Type.Kind()
//取得name字段
name := index.FieldByName("name")
var nameValue interface{}
switch nameType {
case reflect.String:
nameValue = name.String()
break
case reflect.Int:
nameValue = name.Int()
break
}
fmt.Println("name字段类型为:", nameType)
el表达式获取值fmt.Println("name字段值为:", nameValue)
运⾏结果
name字段类型为:string
name字段值为: wang
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论