diff --git a/fieldpath/element.go b/fieldpath/element.go index 5d767081..9783c3ba 100644 --- a/fieldpath/element.go +++ b/fieldpath/element.go @@ -163,12 +163,8 @@ func (s *PathElementSet) Insert(pe PathElement) { if s.members[loc].Equals(pe) { return } - n := len(s.members) - 1 - s.members = append(s.members, s.members[n]) - for n > loc { - s.members[n] = s.members[n-1] - n-- - } + s.members = append(s.members, PathElement{}) + copy(s.members[loc+1:], s.members[loc:]) s.members[loc] = pe } diff --git a/fieldpath/set.go b/fieldpath/set.go index 9d0b803b..b3aebfef 100644 --- a/fieldpath/set.go +++ b/fieldpath/set.go @@ -188,12 +188,8 @@ func (s *SetNodeMap) Descend(pe PathElement) *Set { if s.members[loc].pathElement.Equals(pe) { return s.members[loc].set } - n := len(s.members) - 1 - s.members = append(s.members, s.members[n]) - for n > loc { - s.members[n] = s.members[n-1] - n-- - } + s.members = append(s.members, setNode{}) + copy(s.members[loc+1:], s.members[loc:]) s.members[loc] = setNode{pathElement: pe, set: &Set{}} return s.members[loc].set }