INNER CODE UNIT · Go
fieldByName
jinzhu/copier · copier.go:873
func fieldByName(v reflect.Value, name string, caseSensitive bool) reflect.Value {
if caseSensitive {
return v.FieldByName(name)
}
// For case-insensitive matching, prioritize exported fields
// First try exact match (might be the exported field)
if field := v.FieldByName(name); field.IsValid() {
return field
}
// If exact match fails, perform case-insensitive matching
// but prioritize exported fields while preserving promoted-field lookup.
var candidates []reflect.Value
var candidateFields []reflect.StructField
for _, fieldType := range reflect.VisibleFields(v.Type()) {
if strings.EqualFold(fieldType.Name, name) {