Спецификация языка программирования Go
Для строки, массива, указателя на массив или среза a первичное выражение
a[low : high]
создает подстроку или срез. Индексы low и high определяют, какие элементы операнда a появляются в результате. Результат имеет индексы начиная с
0
и длины, равнойhigh - low
.Для удобства любой из индексов можно опустить. Недостающий низкий индекс по умолчанию равен нулю; Отсутствует высокий индекс по умолчанию для длины разрезанного операнда
Для массивов или строк индексы находятся в диапазоне, если 0 & lt; = низкий & lt; = высокий & lt; = len (a), в противном случае они являются вне диапазона. Для срезов верхняя граница индекса - это колпачок емкости (а), а не длина. Постоянный индекс должен быть неотрицательным и быть представленным значением типа int; для массивов или постоянных строк постоянные индексы также должны находиться в зоне действия. Если оба индекса являются постоянными, они должны удовлетворять минимуму & lt; = высокий. Если индексы находятся вне допустимого диапазона во время выполнения, возникает паника во время выполнения.
blockquote>Для
q := p[m:n]
,q
представляет собой фрагментp
, начинающийся с индексаm
для длины элементовn-m
.