`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`.

Reply via email to