Могут ли срезы ссылаться на массивы / срезы различий в разных диапазонах индексов или есть удобный обходной путь? - PullRequest
0 голосов
/ 15 января 2020

Примерно так:

slice := make([]byte, 5)
slice[0:2] = someArray[3:5]  // I don't want to copy someArray[3:5], I want slice[0:2] to reference it
slice[2:5] = someArray[0:3]  // similarly, I want slice[2:5] to reference someArray[0:3]

Конечно, приведенный выше код не дает желаемых результатов, он просто отвечает моим требованиям.

1 Ответ

2 голосов
/ 15 января 2020

Нет, go срезы не могут этого сделать. Срез - это просто три значения: базовый массив, емкость и длина. Это простой вид базового массива.

Вы можете иметь два слайса, используя один и тот же базовый массив.

slicea:=someArray[3:5]
sliceb:=someArray[0:3]

slicea имеет длину = 2, sliceb имеет length = 3, и они являются непересекающимися представлениями в одном массиве.

...