package main

import "fmt"

func main() {
	// append satu elemen: hasil reassign kembali ke variabel.
	angka := []int{1, 2}
	angka = append(angka, 3)
	fmt.Println("satu elemen :", angka)

	// append beberapa elemen sekaligus.
	angka = append(angka, 4, 5)
	fmt.Println("dua elemen  :", angka)

	// Menempelkan slice lain dengan operator ...
	genap := []int{6, 7}
	angka = append(angka, genap...)
	fmt.Println("ditempel    :", angka)
	fmt.Println("len         :", len(angka))

	// copy menyalin elemen dan mengembalikan jumlah elemen tersalin.
	asal := []int{10, 20, 30, 40, 50}
	tujuan := make([]int, 3)
	n := copy(tujuan, asal)
	fmt.Println("n tersalin  :", n)
	fmt.Println("tujuan      :", tujuan)

	// Tujuan lebih besar daripada sumber: hanya bagian awal yang terisi.
	besar := make([]int, 5)
	n2 := copy(besar, []int{90, 91})
	fmt.Println("n2 tersalin :", n2)
	fmt.Println("besar       :", besar)

	// copy pada area tujuan yang beririsan (overlap).
	geser := []int{1, 2, 3, 4, 5}
	copy(geser[1:], geser[:4])
	fmt.Println("geser       :", geser)
}
