주로 리플렉션을 통해 구현되며 Go-expression 과 EL 표현식은 배열과 슬라이스의 첨자 데이터를 얻는 데에도 사용됩니다.
먼저 구조체 정의
type Order struct {
name string
age int
}
장면을 정의하고 테스트 필드가 있으며 유형은 Order 개체의 조각을받는 interface {}입니다. 이제 Order 슬라이스에서 아래 첨자가 1 인 이름의 값을 가져오고 싶습니다.
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)
fmt.Println("name字段值为:", nameValue)
가동 결과
name字段类型为: string
name字段值为: wang