package main

import "fmt"

// ubahIsi menerima salinan array, mengubah salinan tersebut, lalu mengembalikannya.
func ubahIsi(arr [3]int) [3]int {
	arr[0] = 999
	return arr
}

func main() {
	// Deklarasi tanpa nilai awal: zero value untuk setiap elemen.
	var kosong [3]int
	fmt.Println("kosong :", kosong)

	// Literal array: panjang ditulis di dalam tipe.
	angka := [3]int{10, 20, 30}
	fmt.Println("angka  :", angka)
	fmt.Println("len    :", len(angka))

	// Assignment menyalin seluruh isi array.
	salinan := angka
	salinan[0] = 1000
	fmt.Println("salinan:", salinan)
	fmt.Println("angka  :", angka)

	// Array yang dilewatkan ke fungsi juga ikut disalin.
	hasil := ubahIsi(angka)
	fmt.Println("hasil  :", hasil)
	fmt.Println("angka  :", angka)
}
