Despite what’s said about Go slices in this blog post, if you really know what dynamic arrays are internally, you should immediately recognize the resemblance between Go’s slices and a dynamic array.
To be more precise, a typical dynamic array implementation is like
typedef struct {
int *array;
int used;
int size;
} Array;
Where the underlying array is allocated by malloc
and will be reallocted by realloc
if need be. Now, let’s take a look at the internals of a Go slice. Oh, it has three parts too. A pointer to an underlying array, a length, and a capacity. Sounds familiar, right? How should we call such a structure if not “dynamic arrays” then?