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]