gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/reflectx/ref-desc-type-slice.go (about)

     1  package reflectx
     2  
     3  import (
     4  	"gitee.com/zhongguo168a/gocodes/datax/schemax"
     5  )
     6  
     7  type ArrayTypeRef struct {
     8  }
     9  
    10  func (f *ArrayTypeRef) RefHas(field string) bool {
    11  	switch field {
    12  	case "Elem":
    13  		return true
    14  	}
    15  	return false
    16  }
    17  func (f *ArrayTypeRef) RefGet(target IRefObject, ArrayType string) (val interface{}, isNil bool) {
    18  	obj := target.(*schemax.ArrayType)
    19  	switch ArrayType {
    20  	case "Elem":
    21  		return obj.Elem, obj.Elem == nil
    22  	}
    23  	return nil, true
    24  }
    25  
    26  func (f *ArrayTypeRef) RefSet(target IRefObject, ArrayType string, val interface{}) {
    27  	obj := target.(*schemax.ArrayType)
    28  	switch ArrayType {
    29  	case "Elem":
    30  		obj.Elem = val.(schemax.IType)
    31  	}
    32  	return
    33  }
    34  
    35  func (f *ArrayTypeRef) RefNew() IRefObject {
    36  	return &schemax.ArrayType{}
    37  }
    38  
    39  func (f *ArrayTypeRef) RefType() string {
    40  	return "array"
    41  }