append result not assigned to the same slice
910
911// Clone makes a deep copy of the keyspace config.
912func (c *KeyspaceConfig) Clone() *KeyspaceConfig {
913 preAlloc := append(c.PreAlloc[:0:0], c.PreAlloc...)914 cfg := *c
915 cfg.PreAlloc = preAlloc
916 return &cfg
append result not assigned to the same slice
612
613// Clone returns a cloned PD server config.
614func (c *PDServerConfig) Clone() *PDServerConfig {
615 runtimeServices := append(c.RuntimeServices[:0:0], c.RuntimeServices...)616 cfg := *c
617 cfg.RuntimeServices = runtimeServices
618 return &cfg
Description
The builtin function append
returns the updated slice after the append operation.
This resulting slice is usually assigned back to the same variable that contained
the original slice to which new values were appended.
Bad practice
x = []int{1, 3, 5}
append(x, 7) // returns the value []int{1, 3, 5, 7}. This is usually assigned back to x
x := []int{}
y := []int{}
x = append(y, 1) // possibly wrong
Recommended
x = []int{1, 3, 5}
x = append(x, 7)
x := []int{}
y := []int{}
y = append(y, 1) // append 1 to y