`seq[T]` will not share buffer like slices in golang - it has its own copy of
content. For example
import std/strformat
let a = [1, 2, 3, 4]
let b = a[0..1]
let c = a
let d = b
echo &"typeof(a) = {$typeof(a)}"
echo &"typeof(b) = {$typeof(b)}"
echo &"typeof(c) = {$typeof(c)}"
echo &"typeof(d) = {$typeof(d)}"
echo &"addr a = {cast[uint](addr a):x}"
echo &"addr b = {cast[uint](addr b):x}"
echo &"addr c = {cast[uint](addr c):x}"
echo &"addr d = {cast[uint](addr d):x}"
echo &"addr b[0] = {cast[uint](addr b[0]):x}"
echo &"addr d[0] = {cast[uint](addr d[0]):x}"
Run
Output
typeof(a) = array[0..3, int]
typeof(b) = seq[int]
typeof(c) = array[0..3, int]
typeof(d) = seq[int]
addr a = 555e1b1cd020
addr b = 555e1b1cd200
addr c = 555e1b1cd2c0
addr d = 555e1b1cd210
addr b[0] = 7f521ba0a058
addr d[0] = 7f521ba0a078
Run
So you can't modify `a` through `b`, also modify `d` won't affect `a` and `b`.