golangでスライスのdeep copy

結局http://blog.golang.org/go-slices-usage-and-internalsこれ読んだほうが早いのだけれど

package main

import (
    "fmt"
)

func main() {
    s := []int{1, 2, 3, 4, 5}
    s_ := s[3:5]
    s__ := make([]int, cap(s))
    copy(s__, s)
    fmt.Println(s, s_) // [1 2 3 4 5] [4 5]
    s[4] = 1
    fmt.Println(s, s_, s__) // [1 2 3 4 1] [4 1] [1 2 3 4 5]
}