>> У вас проблема в том, что вы не можете отделить в тексте абстракцию от подробностей её реализации. Разрешите воспользоваться вашей же аналогией с автомобилем:
Вот есть автомобиль - "Самодвижущееся транспортное средство с двигателем для перевозки грузов и пассажиров по безрельсовым путям". В целом, у него внутри может быть ДВС, может быть электродвигатель, может быть паровой котел - вообще по барабану. Пока оно само едет - это автомобиль, остальное - детали реализации. Это наш условный std::vector либо любая другая реализация динамического массива.
А вот рядом с ним стоит прицеп. У него и колеса, как у автомобиля, и блестит так же... Всего один недостаток у прицепа - у него нет внутри двигателя. Вот не едет он сам, и все. Хоть лошадь запрячь - но надо. Но вы не волнуйтесь, это не беда. Для того, чтобы он ехал (в нашем случае, менял размер), вам дают стандартный мотоблок (append). Он немного с причудами, отказывается один и тот же прицеп дальше установленного производителем расстояния везти, поэтому раз в 50 км приходится цеплять к нему новый прицеп, пересаживаться, и только потом ехать дальше.
Ну вот я говорю, что автомобиль - транспортное средство С ДВИГАТЕЛЕМ, а потому прицеп автомобилем не считается, даже если есть всегда доступный напрокат мотоблок. А вы говорите, что если в ближайшем пункте проката есть доступные мотоблоки, то любая хрень с колесами считается автомобилем.
Ну а про абстракцию: абстракция на то и абстракция, что АБСТРАГИРУЕТ нас от деталей реализации. От ручного ресайза нас слайс не абстрагирует, поэтому он нифига и не динамический.
>> The length of a slice s can be discovered by the built-in function len; unlike with arrays it may change during execution.
Блин:
slice := make([]int, 1, 1)
Покажите мне, пожалуйста, как вы штатными средствами измените length (ну или, хотя бы, capacity) этого слайса, тогда признаю себя неправым. Просто маааленький кусочек кода...
Ну, не покажете - тогда он не динамический, ЧИТД.