Я читал "Go" и задумался над этим фундаментальным вопросом.
В Go достаточно ясно, что срезы более гибкие и обычно могут использоваться вместо массивов, когда вам нужна последовательность данных.
Читая большую часть документации, они, похоже, поощряют разработчиков просто использовать срезы вместо массивов. У меня такое впечатление, что создатели могли просто спроектировать массивы, чтобы их можно было изменить размер и сделать без раздела всех секций. Фактически, такой дизайн сделал бы язык еще более понятным и, возможно, даже поощрял более идиоматический код.
Итак, почему создатели разрешили массивы в первую очередь? Когда будут использоваться массивы вместо ломтиков? Существует ли когда-либо ситуация, когда использование массивов над срезами будет убедительным?
Когда я обратился к официальной документации (http://golang.org/doc/effective_go.html#arrays), единственной полезной частью, которую я нашел, было следующее:
Массивы полезны при планировании детальной планировки памяти и иногда могут помочь избежать выделения, но в первую очередь они являются строительным блоком для срезов.
Они продолжили разговор о том, как массивы дороги как ценности, и как имитировать поведение стиля С с помощью указателя. Даже тогда они закончили раздел массива с четкой рекомендацией:
Но даже этот стиль не является идиоматическим Go. Вместо этого используйте срезы.
Итак, каковы некоторые реальные примеры "планирования детального макета памяти" или "помочь избежать выделения", что фрагменты не подходят для?