Skip to content

Commit

Permalink
Ignore unexported fields
Browse files Browse the repository at this point in the history
  • Loading branch information
jinzhu committed Dec 1, 2021
1 parent c72a821 commit d380b4d
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
10 changes: 6 additions & 4 deletions copier.go
Original file line number Diff line number Diff line change
Expand Up @@ -348,10 +348,12 @@ func deepFields(reflectType reflect.Type) []reflect.StructField {

for i := 0; i < reflectType.NumField(); i++ {
v := reflectType.Field(i)
if v.Anonymous {
fields = append(fields, deepFields(v.Type)...)
} else {
fields = append(fields, v)
if v.IsExported() {
if v.Anonymous {
fields = append(fields, deepFields(v.Type)...)
} else {
fields = append(fields, v)
}
}
}

Expand Down
5 changes: 5 additions & 0 deletions copier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ func (user User) DoubleAge() int32 {
}

type Employee struct {
_User *User
Name string
Birthday *time.Time
Nickname *string
Expand Down Expand Up @@ -134,6 +135,10 @@ func TestCopyStruct(t *testing.T) {
employee4 := &Employee{}
copier.Copy(&employee4, user)
checkEmployee(*employee4, user, t, "Copy From Ptr To Double Ptr")

employee5 := &Employee{}
copier.Copy(&employee5, &employee)
checkEmployee(*employee5, user, t, "Copy From Employee To Employee")
}

func TestCopyFromStructToSlice(t *testing.T) {
Expand Down

0 comments on commit d380b4d

Please sign in to comment.