github.com/modern-go/Reflect2@v1.0.1/safe_struct.go (about)

     1  package reflect2
     2  
     3  type safeStructType struct {
     4  	safeType
     5  }
     6  
     7  func (type2 *safeStructType) FieldByName(name string) StructField {
     8  	field, found := type2.Type.FieldByName(name)
     9  	if !found {
    10  		panic("field " + name + " not found")
    11  	}
    12  	return &safeField{StructField: field}
    13  }
    14  
    15  func (type2 *safeStructType) Field(i int) StructField {
    16  	return &safeField{StructField: type2.Type.Field(i)}
    17  }
    18  
    19  func (type2 *safeStructType) FieldByIndex(index []int) StructField {
    20  	return &safeField{StructField: type2.Type.FieldByIndex(index)}
    21  }
    22  
    23  func (type2 *safeStructType) FieldByNameFunc(match func(string) bool) StructField {
    24  	field, found := type2.Type.FieldByNameFunc(match)
    25  	if !found {
    26  		panic("field match condition not found in " + type2.Type.String())
    27  	}
    28  	return &safeField{StructField: field}
    29  }