Skip to content

Commit

Permalink
only unmashal public variables (#2872)
Browse files Browse the repository at this point in the history
* only unmashal public variables

* only unmashal public variables

* only unmashal public variables

* only unmashal public variables
  • Loading branch information
Mikaelemmmm committed Feb 12, 2023
1 parent 99a7e66 commit 84f9863
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
3 changes: 3 additions & 0 deletions core/mapping/unmarshaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -853,6 +853,9 @@ func (u *Unmarshaler) unmarshalWithFullName(m valuerWithParent, v any, fullName

numFields := baseType.NumField()
for i := 0; i < numFields; i++ {
if !baseType.Field(i).IsExported() {
continue
}
if err := u.processField(baseType.Field(i), valElem.Field(i), m, fullName); err != nil {
return err
}
Expand Down
18 changes: 18 additions & 0 deletions core/mapping/unmarshaler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4265,6 +4265,24 @@ func TestUnmarshalStructPtrOfPtr(t *testing.T) {
}
}

func TestUnmarshalOnlyPublicVariables(t *testing.T) {
type demo struct {
age int `key:"age"`
Name string `key:"name"`
}

m := map[string]any{
"age": 3,
"name": "go-zero",
}

var in demo
if assert.NoError(t, UnmarshalKey(m, &in)) {
assert.Equal(t, 0, in.age)
assert.Equal(t, "go-zero", in.Name)
}
}

func BenchmarkDefaultValue(b *testing.B) {
for i := 0; i < b.N; i++ {
var a struct {
Expand Down

0 comments on commit 84f9863

Please sign in to comment.