Array dan Slice

Di jurnal ini akan membahas tentang data struktur array. Dimana pembahasannya mencakup beberapa karakteristik dasar (fundamental) dan bagaimana implementasinya ketika menggunakannya di program.

Pembukaan

Array adalah koleksi dari elemen yang mempunyai kapasitas yang nilainya ditentukan di awal pembuatannya, dimana di golang ukurannya adalah tetap (fixed-size), sehingga tidak bisa diperbesar atau ditambah kapasitasnya. Selain itu tipe data elemennya juga tetap atau sama.

Untuk setiap elemen dari array memiliki index berupa angka yang menggambarkan posisi urutan dari elemen di arraynya, index ini bisa digunakan untuk mengakses elemennya. Index array ini dimulai dari 0 . Secara default value dari empty array adalah zero values (seperti: 0, 0.0, false, atau "").

Slice mirip seperti array tapi memiliki ukuran atau panjangnya dinamis (ukuran bisa berubah atau tidak fixed). Slice menerapkan sistem referensi dari array. Sehingga perubahan slice bisa mengakibatkan slice lainnya berubah jika mempunyai alamat (address) yang sama.

Untuk mengetahui ukuran atau panjang array maupun slice dapat menggunakan function len(varYangDiCek)

Sandbox

Array dibuat dengan [panjangArray]TypeData

// deklarasi array dengan panjang 5 yang elemennya bertype data int
var nomorFavorit [5]int
nomorFavorit[0] = 10

// nomorFavorit sekarang menjadi [10 0 0 0 0]
// 0 adalah zero value dari int

// jika deklarasi langsung initialisasi dapat ditulis
initialTeman := [5]string{"A", "C", "R", "D", "B"}

// untuk mendapatkan elemen dapat melakuakan indexing
nomorPertama := nomorFavorit[0] // print: 10

Element array dapat berupa tipe data apapun bahkan array. misal untuk kasus nested array (array multidimensi). Berikut contoh beberapa cara penulisannya

var myNumbersVersi1 = [2][3]int{[int]{32, 21, 10}, [3]int{9, 8, 6}}
var myNumbersVersi2 = [2][3]int{{32, 21, 10}, {9, 8, 6}}

jika penulisan secara vertical wajib menambahkan tanda koma di akhir

initialTeman := [5]string{
    "A",
    "C",
    "R",
    "D",
    "B",  // <------
}

Untuk deklarasi tanpa mengetahui panjang array dapat mengguakan ellipses operator (...) di dalam panjang arraynya

var myBestYears = [...]int{2013, 2020, 2021, 2015, 2018}

fmt.PrintLn(len(myBestYears)) // 5

dengan hal tersebut maka panjang array akan menyesuaikan data yang di initialisasi.

Secara default code var mySlice []int akan menghasilkan panjang 0. Jika mau membuat slice bisa mengguakan function make() sehingga bisa membuat ukuran secara dinamis.

// membuat slice dengan panjang 5 dan 
nums := make([]int, 5, 10) // len(nums) == 5, cap(nums) == 10

Tiga hal yang ada di slice dari make:

  • type -> type data element yang akan dibuat ke slice

  • length -> panjang element yang di set ke slice

  • capacity <optional> -> maks size yang di set

Implementasi

Iterasi array ataupun slice

membuat slice dari array

Function di slice

Latihan

TODO add repl.it link dari soal latihan golang array dan slice

Last updated

Was this helpful?