Fundamental Golang #12: Tipe Data Slice
Tipe data Slice dalam golang sangat mirip dengan array. yang membedakannya, yaitu ukuran Slice yang bisa berubah.
Sementara dalam Array, ukuran data yang didefinisikan pada saat inisialisasi tidak dapat berubah ubah, Slice memberikan fleksibilitas lebih dengan kapasitasnya untuk mengubah ukuran data.
Satu hal yang perlu dipahami adalah bahwa Slice selalu terkait langsung dengan Array. Dimana Slice merupakan struktur data yang mengakses dan memanipulasi sebagian atau bahkan seluruh data yang ada dalam Array.
Membuat Slice Dari Array
| Membuat Slice | Keterangan |
|---|---|
| array[low:high] | Membuat slice dari array dimulai index low sampai index sebelum high |
| array[low:] | Membuat slide dari array dimulai index low sampai index akhir di array |
| array[:high] | Membuat slice dari array dimulai index 0 sampai index sebelum high |
| array[:] | Membuat slice dari array dimulai index 0 sampai index akhir di array |
Berikut Contoh membuat slice dari array
GO
package main
import "fmt"
func main() {
// mendeklarasikan variabel months bertipe array
var months = [...]string{"Januari",
"Febuari",
"Maret",
"April",
"Mei",
"Juni",
"Juli",
"Agustus",
"September",
"Oktober",
"November",
"Desember",
}
/*
mendefinisikan slice dari array "months".
Slice ini dimulai dari indeks ke 4 (bulan Mei)
dan berakhir tepat sebelum indeks ke 7 (bulan Agustus),
sehingga mencakup hanya bulan Mei, Juni, dan Juli.
*/
var slice = months[4:7]
fmt.Println(slice) // Output : [Mei Juni Juli]
}
Function Slice
| Operasi | Keterangan |
|---|---|
| len(slice) | Untuk mendapatkan panjang slice |
| cap(slice) | Untuk mendapat kapasitas (maksimal panjang slice) |
| append(slice, data) | Membuat slice baru dengan menambah data ke posisi terakhir slice, jika kapasitas sudah penuh, maka akan membuat array baru |
| make([]TypeData, length, capacity) | Membuat slice baru |
| copy(destination, source) | Menyalin slice dari source ke destination |
GO
package main
import "fmt"
func main() {
// mendeklarasikan variabel months bertipe array
var months = [...]string{"Januari",
"Febuari",
"Maret",
"April",
"Mei",
"Juni",
"Juli",
"Agustus",
"September",
"Oktober",
"November",
"Desember",
}
var slice = months[4:7]
fmt.Println(slice)
// Mendapatkan panjang slice
fmt.Println(len(slice)) // Output : 3
// Mendapatkan capacity slice
fmt.Println(cap(slice)) // Output : 8
//Menambahkan data ke slice
var slice2 = append(slice, "Bulan Baru")
fmt.Println(slice2) // Output : [Mei, Juni, Juli, Bulan Baru]
//Membuat slice tanpa array
var name = make([]string, 2, 5) // make([]tipedata, size, capacity)
name[0] = "Hajid"
name[1] = "Joko"
fmt.Println(name) // Output : [Hajid, Joko]
//Menyalin slice nama
var name_copy = make([]string, len(name), cap(name))
copy(name_copy, name)
fmt.Println(name_copy) // Output : [Hajid, Joko]
}
Hati-Hati Saat Membuat Array
• Saat membuat Array, kita harus berhati-hati, jika salah, maka yang kita buat bukanlah Array, melainkan Slice
GO
package main
import (
"fmt"
)
func main() {
iniArray := [...]int{1, 2, 3, 4, 5}
iniSlice := []int{1, 2, 3, 4, 5}
fmt.Println(iniArray)
fmt.Println(iniSlice)
}