Slices
Slice adalah struktur data yang mirip array tetapi dengan ukuran yang dinamis (bisa berubah).
Contoh Masalah
Bagaimana cara menyimpan dan mengolah kumpulan data yang ukurannya bisa berubah? Misalnya:
- Daftar tugas yang bisa ditambah atau dikurangi
- Daftar peserta yang bisa bertambah
- Mengambil sebagian data dari kumpulan data yang besar
Penyelesaian
package main
import "fmt"
func main() {
// 1. Membuat slice
// Cara 1: dari array
arr := [5]int{1, 2, 3, 4, 5}
slice1 := arr[1:4] // mengambil elemen index 1,2,3
// Cara 2: langsung
slice2 := []int{10, 20, 30, 40, 50}
// Cara 3: dengan make
slice3 := make([]int, 3, 5) // panjang 3, kapasitas 5
// 2. Menampilkan slice
fmt.Println("Slice 1:", slice1)
fmt.Println("Slice 2:", slice2)
fmt.Println("Slice 3:", slice3)
// 3. Menambah elemen (append)
slice2 = append(slice2, 60)
fmt.Println("\nSetelah append 60:", slice2)
// 4. Mengambil sebagian slice (slicing)
sebagian := slice2[1:4]
fmt.Println("Sebagian (index 1-3):", sebagian)
// 5. Contoh penggunaan: daftar tugas
var tugas []string
// Menambah tugas
tugas = append(tugas, "Belajar Go")
tugas = append(tugas, "Buat Proyek")
tugas = append(tugas, "Menulis Blog")
fmt.Println("\nDaftar Tugas:")
for i, t := range tugas {
fmt.Printf("%d. %s\n", i+1, t)
}
// Menghapus tugas kedua (index 1)
tugas = append(tugas[:1], tugas[2:]...)
fmt.Println("\nSetelah menghapus tugas kedua:")
for i, t := range tugas {
fmt.Printf("%d. %s\n", i+1, t)
}
}
Penjelasan Kode
Membuat Slice
- Dari array:
array[start:end] - Langsung:
[]type{values} - Dengan make:
make([]type, length, capacity)
- Dari array:
Operasi Slice
- Append: menambah elemen
- Slicing: mengambil sebagian
- len(): panjang slice
- cap(): kapasitas slice
Perbedaan dengan Array
- Ukuran bisa berubah
- Referensi ke array dasar
- Lebih fleksibel
Output
Slice 1: [2 3 4]
Slice 2: [10 20 30 40 50]
Slice 3: [0 0 0]
Setelah append 60: [10 20 30 40 50 60]
Sebagian (index 1-3): [20 30 40]
Daftar Tugas:
1. Belajar Go
2. Buat Proyek
3. Menulis Blog
Setelah menghapus tugas kedua:
1. Belajar Go
2. Menulis Blog
Tips
- Gunakan slice untuk data yang ukurannya bisa berubah
- Perhatikan kapasitas saat menggunakan make
- Slice adalah reference type (berbagi memori)
- Gunakan append untuk menambah elemen
- Hati-hati dengan slice of slice (sharing array)