Go 언어는 인터페이스에서 배열 / 슬라이스의 지정된 첨자에서 구조의 필드를 가져옵니다.

주로 리플렉션을 통해 구현되며 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

추천

출처blog.csdn.net/qq_34758074/article/details/106660081