В книге Go Язык программирования авторы заявили следующее (в разделе 4.2, посвященном фрагментам):
Длина [фрагмента] - это число элементов среза; он не может превышать емкость, которая обычно представляет собой количество элементов между началом среза и концом базового массива.
Вопрос
Поскольку авторы решили используйте слово « обычно », это означает, что на самом деле могут быть обстоятельства, при которых емкость среза отличается от количества элементов между началом среза и концом базового массива - -когда это будет так?
Другими словами, когда приведенное ниже выражение будет true
:
cap(mySlice) != len(underlyingArray) - startIndexOfSlice
Единственный случай, о котором я могу думать, это когда срез nil
, и в этом случае базового массива не будет.