copy 関数を使う。コピー元のスライスより、コピー先のほうが長い場合はもちろん、短い場合でもエラーにならない。長さはコピー先のスライスに合わせられる。
package main
import "fmt"
func main() {
    a := []int{ 1,2,3,4,5,6,7,8 }
    b := []int{ 10,20,30,40,50,60,70,80,90,100 }
    c := []int{ 10,20,30,40 }
    fmt.Println(a)
    fmt.Println(b)
    fmt.Println(c)
    copy(b, a)
    copy(c, a)
    fmt.Println(b)
    fmt.Println(c)
}
^o^ > go run slice_copy.go [1 2 3 4 5 6 7 8] [10 20 30 40 50 60 70 80 90 100] [10 20 30 40] [1 2 3 4 5 6 7 8 90 100] [1 2 3 4]