В соответствии с кодом, которым вы поделились, currentSongIndex не инициализируется. У него будет какое-то значение мусора, поэтому ваше условие if (songIndex.getCurrentIndex () == 0) в первый раз будет ложным, а songIndex.getCurrentIndex () вернет мусор, следовательно recyclerView.getChildAt (songIndex.getCurrentIndex ()); будет нулевым
Срезы имеют много применений над массивами, некоторые из которых уже упоминались в других постерах.
Я думаю, что срезы и массивы описаны намного лучше и более подробно в этой записи в блоге Go.
В дополнение к уже данным ответам, кусочки могут быть динамически определены, а массивы не могут быть. То есть вы можете использовать постоянные только для указания размера массива, в то время как вы можете использовать переменную, чтобы указать размер ломтика.
В go
массивы передаются по значению; поэтому для "передачи по ссылке" используется срез. И это ещё не всё! Цитируя учебник Go go:
Размер массива - часть его набирать, однако, можно объявить ломтик переменная, которой можно присвоить указатель на любой массив с таким же тип элемента или, что более распространено, -а ломтиковое выражение формы a[low : высокий], представляющий собой субмассив проиндексированный низшим через высокий-1. Слайсы очень похожи на массивы, но не имеют явный размер ([] vs. [10]) и они ссылаться на сегмент, лежащий в основе, часто анонимный, обычный массив. Несколько срезов могут совместно использовать данные, если они представляют собой части одного и того же массива; несколько массивов никогда не могут совместно использовать данные.
Фрагменты гораздо чаще встречаются в Go. программы, чем обычные массивы; они - более гибкий, иметь ссылку семантики и эффективны. Что им не хватает точного контроля схема хранения данных обычного массива; если вы хотите иметь сотню элементов массив, хранящийся в вашей структуре, вы должны использовать обычный массив.
При передаче массива в функцию, ты почти всегда хочешь объявить формальный параметр - ломтик. Когда вы вызываете функцию, принимаете адрес массива и Go будет создать (эффективно) ссылку на срез и передай это.