Skip to content

Commit 03c8f36

Browse files
committed
clean up oneliner helpers
1 parent 6d9760e commit 03c8f36

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

libs/structdiff/diff.go

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func GetStructDiff(a, b any) ([]Change, error) {
5151
var changes []Change
5252

5353
if !v1.IsValid() || !v2.IsValid() {
54-
add(nil, v1, v2, &changes)
54+
changes = append(changes, Change{Field: "", Old: v1.Interface(), New: v2.Interface()})
5555
return changes, nil
5656
}
5757

@@ -81,7 +81,7 @@ func diffValues(path *pathNode, v1, v2 reflect.Value, changes *[]Change) {
8181

8282
// This should not happen; if it does, record this a full change
8383
if v1Type != v2.Type() {
84-
add(path, v1, v2, changes)
84+
*changes = append(*changes, Change{Field: path.String(), Old: v1.Interface(), New: v2.Interface()})
8585
return
8686
}
8787

@@ -95,7 +95,7 @@ func diffValues(path *pathNode, v1, v2 reflect.Value, changes *[]Change) {
9595
return
9696
}
9797
if v1Nil || v2Nil {
98-
add(path, v1, v2, changes)
98+
*changes = append(*changes, Change{Field: path.String(), Old: v1.Interface(), New: v2.Interface()})
9999
return
100100
}
101101
}
@@ -107,7 +107,7 @@ func diffValues(path *pathNode, v1, v2 reflect.Value, changes *[]Change) {
107107
diffStruct(path, v1, v2, changes)
108108
case reflect.Slice, reflect.Array:
109109
if v1.Len() != v2.Len() {
110-
add(path, v1, v2, changes)
110+
*changes = append(*changes, Change{Field: path.String(), Old: v1.Interface(), New: v2.Interface()})
111111
} else {
112112
for i := range v1.Len() {
113113
node := pathNode{Prev: path, Index: i}
@@ -119,12 +119,12 @@ func diffValues(path *pathNode, v1, v2 reflect.Value, changes *[]Change) {
119119
diffMap(path, v1, v2, changes)
120120
} else {
121121
if !reflect.DeepEqual(v1.Interface(), v2.Interface()) {
122-
add(path, v1, v2, changes)
122+
*changes = append(*changes, Change{Field: path.String(), Old: v1.Interface(), New: v2.Interface()})
123123
}
124124
}
125125
default: // primitives, interfaces, etc.
126126
if !reflect.DeepEqual(v1.Interface(), v2.Interface()) {
127-
add(path, v1, v2, changes)
127+
*changes = append(*changes, Change{Field: path.String(), Old: v1.Interface(), New: v2.Interface()})
128128
}
129129
}
130130
}
@@ -176,10 +176,12 @@ func diffStruct(path *pathNode, s1, s2 reflect.Value, changes *[]Change) {
176176
func diffMap(path *pathNode, m1, m2 reflect.Value, changes *[]Change) {
177177
keySet := map[string]reflect.Value{}
178178
for _, k := range m1.MapKeys() {
179-
keySet[keyToString(k)] = k
179+
ks := fmt.Sprint(k.Interface())
180+
keySet[ks] = k
180181
}
181182
for _, k := range m2.MapKeys() {
182-
keySet[keyToString(k)] = k
183+
ks := fmt.Sprint(k.Interface())
184+
keySet[ks] = k
183185
}
184186

185187
var keys []string
@@ -215,9 +217,3 @@ func getForceSendFields(v reflect.Value) []string {
215217
}
216218
return nil
217219
}
218-
219-
func keyToString(k reflect.Value) string { return fmt.Sprint(k.Interface()) }
220-
221-
func add(path *pathNode, v1, v2 reflect.Value, changes *[]Change) {
222-
*changes = append(*changes, Change{Field: path.String(), Old: v1.Interface(), New: v2.Interface()})
223-
}

0 commit comments

Comments
 (0)