Go Slices and Backing Arrays

A slice is a small descriptor containing a pointer to an underlying array plus length and capacity. Copying a slice copies that descriptor, so slices can share storage until an append allocates a new backing array.