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) {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…