Sebelumnya kita sudah membahas mengenai tipeata array, sekarang kita akan membahas Tipe Data Slice di Golang, tipe data yang tidak jauh dari array.
Tipe Data Slice merupakan potongan dari array, tipe data ini mirip dengan array, namun yang membedakan dari tipe data ini ukurannya tidak dapat berubah, sedangkan array tidak dapat berubah.
Slice dan array saling terhubung, dimana slice data yang mengakses sebagian atau seluruh array.
Tipe data ini memiliki 3 data yaitu pointer, length dan capacity. Pointer merupakan petunjuk data pertama di array slice, length merupakan panjang dari slice dan capacity merupakan kapasitas dari length, dimana legh tidak boleh lebih dari capacity.
Cara Tipe Data Slice di Golang
Daftar Isi
Membuat slice di goalng memiliki beberapa cara, baik itu dari low ke hight, low, hight atau keseluruhan data array, berikut struktur dan cara membuat slice.
Membuat Slice | Keterangan |
array[low:hight] | Membuat slice adri array dimulai index low sampai index sebelum hight |
array[low] | Membuat slice dari array dimulai index low sampai index akhir array |
array[hight] | Membuat slice dari array dimulai dari index ke-0 sampai index sebelum hight |
array[:] | Membuat slice dari array indek ke-0 samapi index array terakhir |
Slice juga memiliki function sama halnya dengan array, berikut function slice yang dapat kalian coba dan gunakan
Operasi | Keterangan |
len(slice) | Untuk mendapatkan panjang slice |
cap(slice) | Untuk mendapatkan capacity dari slice |
append(slice, data) | Membuat slice baru dengan menambah data ke posisi terakhir slice, jika kapasitas sudah penuh, maka akan membuat array baru |
make([]TipeData, length, capacity) | Membuat slice baru |
copy(destination, source) | Menyalin data slice dari source ke destination |
len() dan cap()
contoh program menggunakan function len dan cap
package main import "fmt" func main() { var bulan = [...]string{ "januari", "februari", "maret", "april", "Mei", "juni", "juli", "agustus", "september", "oktober", "november", "desember", } var slice1 = bulan[4:8] fmt.Println(slice1) fmt.Println(len(slice1)) fmt.Println(cap(slice1)) }

pada kode di atas membuat slice var slice1 = bulan[4:8], yang artinya mengambil data dari array bulan index ke-4 sampai 8. Yang dimana karena index dimulai dari 0 maka isinya yaitu mei, juni, juli dan agustus.
jumlah data dari index 4 sampai 8 adalah 4, didapatkan dari fmt.Println(len(slice1)).
dan capacitynya adalah 8, karena dihitung dari slice pertama yaitu mengambil index ke-4 dari array bulan, yaitu dari mei sampai desember, dan jumlahnya adalah 8.
append()
contoh lain dari slice menggunakan append
package main import "fmt" func main() { var buah = [...]string{ "apel", "semangka", "anggur", "Mangga", } var slice1 = buah[2:] fmt.Println(slice1) var append_slice1 = append(slice1, "nanas") fmt.Println(append_slice1) fmt.Println(buah) var slice2 = buah[0:2] fmt.Println(slice2) var append_slice2 = append(slice2, "nanas") fmt.Println(append_slice2) fmt.Println(buah) }

pada kode di atas, kita memiliki variabel array buah yang memiliki 4 buah data yang berisi
“apel”,
“semangka”,
“anggur”,
“Mangga”,
var slice1 = buah[2:] pada bagian sini, mendeklerasikan variabel slice1 dengan mengambil data dari variabel array buah dimulai dari index ke-2 sampai index terakhir.
fmt.Println(slice1) karena diambil dari index ke-2 sampai terakhir maka hasilnya jika kita cetak adalah [anggur mangga]
var append_slice1 = append(slice1, “nanas”) pada bagian code ini, mendeklerasikan variabel append_slice1 dengan value berisi function append(). slice yang akan ditambahkan adalah dari variabel slice1 yang telah dibuat sebelumnya, dengan menambahkan data baru yaitu nanas.
fmt.Println(append_slice1) jika di cek hasilnya maka data baru akan bertambah sehingga menjadi [anggur mangga nanas]. Seperti penjelasan mimin sebelumnya, jika kapasitas telah penuh maka append akan menambahkan index baru.
fmt.Println(buah) namun ketika dicek diarray data tidak berubah atau bertambah, karena jumlah kapasitas di array sudah full, jadi append pada slice tidak mempengaruhi data array.
sekatang kita perhatikan perbedaan dari contoh slice yang kedua pada kode diatas, contoh slice pertama data yang ada di array tidak berubah sama sekali sedangkan contoh yang kedua data array berubah, karena pada contoh slice ke-2 ini menggunakan data dari index ke-0 samapi ke-2
var slice2 = buah[0:2], perlu kalian tahu, index terakhir tidak termasuk, jadi jika dicetak hanya index ke-0 dan ke-1 yang muncul.
ketika menambahkan data var append_slice2 = append(slice2, “nanas”), program akan menambahkan data nanas pada index terakhir sline yaitu index ke-2. Karena kapasitas masih cukup data pada arraypun berubah menjadi
[apel semangka nanas mangga]
make([]TipeData, length, capacity)
jika kalian ingin membuat slice baru kalian dapat menggunakan make([]TipeData, length, capacity). Contoh
package main import "fmt" func main() { var MakeSlice = make([]string,3, 10) MakeSlice[0] ="kucing" MakeSlice[1] ="sapi" MakeSlice[2] ="semut" fmt.Println(MakeSlice) fmt.Println(len(MakeSlice)) fmt.Println(cap(MakeSlice)) }

copy(destination, source)
function copy digunakan untuk menyalin slice, contoh
package main import "fmt" func main() { var MakeSlice = make([]string,3, 10) MakeSlice[0] ="kucing" MakeSlice[1] ="sapi" MakeSlice[2] ="semut" fmt.Println(MakeSlice) var copySlice = make([]string, len(MakeSlice), cap(MakeSlice)) copy(copySlice, MakeSlice) fmt.Println(copySlice) }

pada conoh kode di atas, mencoba mengcopy slice pada variabel MakeSlice ke variabel copySlice, maka buat slice terlebih dahulu dengan function make, di sesuaikan dengan isi variabel MakeSlice dengan kode var copySlice = make([]string, len(MakeSlice), cap(MakeSlice)). berikutnya masukkan destinasi adalah variabel copySlice dan source nya adalah MakeSlice copy(copySlice, MakeSlice).
dari pembuatan slice perlu kalian perhatikan perbedaan antara slice dan array, sekilas terlihat sama namun berbeda. Perbedaan yang paling terlihat yaitu dari segi penulisan kode program.
//array var variabel_array1 =[...]int{1,2,3} var variabel_array2 =[2]int{1,2,3} //slice var variabel_slice = []int{1,2,3}
dari kode di atas terlihat perbedaan antara slice dan array terletak pada bagian kurung siku, array memiliki nilai atau dapat disikan dengan titik titik sebanayak tiga buah ( … ). Sedangkan slice tidak memiliki isi.
Baca Juga Tipe Data Array di Golang