@@ -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) {
176176func 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