Panduan Pemula untuk Slices di Go

Hai teman-teman, para pemrogram Go masa depan! Hari ini, kita akan melihat salah satu struktur data yang paling multifungsi dan kuat di Go: slices. Anggap slices seperti pisau multitask di programming Go – mereka fleksibel, efisien, dan setelah Anda menguasai mereka, Anda akan bertanya-tanya bagaimana Anda pernah mengode tanpanya!

Go - Slice

Apa Itu Slice?

Sebelum kita masuk ke detil, mari kita buat landasan. Bayangkan Anda merencanakan sebuah pesta (pasti pesta coding, kan!). Anda butuh daftar tamu, tapi Anda belum yakin berapa banyak orang yang akan datang. Ini adalah tempat slices bersinar! Mereka seperti daftar tamu dinamis yang dapat bertambah atau berkurang sesuai kebutuhan.

Dalam Go, slice adalah pandangan fleksibel dan dinamis ke dalam array. Itu seperti jendela yang dapat mengatur ukurannya, memungkinkan Anda untuk bekerja dengan sebagian array atau bahkan membuat yang baru secara instan.

Mendefinisikan Slice

Mari kita mulai dengan membuat slice pertama kita. Ada beberapa cara untuk melakukan ini, jadi mari kita jelajahi mereka satu per satu.

Metode 1: Menggunakan fungsi make()

guestList := make([]string, 3)
fmt.Println(guestList) // Output: [  ]

Dalam contoh ini, kita membuat slice string dengan panjang awal 3. Itu seperti menyiapkan tiga kursi kosong untuk pesta kita. Fungsi make() adalah planner pesta kita, menyiapkan ruang untuk tamu kita.

Metode 2: Slice literal

guestList := []string{"Alice", "Bob", "Charlie"}
fmt.Println(guestList) // Output: [Alice Bob Charlie]

Di sini, kita membuat slice dan segera mengisi tamunya. Itu seperti memiliki daftar VIP yang siap pakai!

Metode 3: Slicing array yang ada

partyRoom := [5]string{"Alice", "Bob", "Charlie", "David", "Eve"}
vipGuests := partyRoom[0:3]
fmt.Println(vipGuests) // Output: [Alice Bob Charlie]

Dalam kasus ini, kita membuat slice dari array yang ada. Itu seperti memilih tiga orang pertama dari ruang pesta kita untuk menjadi tamu VIP.

Fungsi len() dan cap()

Sekarang kita punya daftar tamu, mari bicarakan tentang dua fungsi penting: len() dan cap().

guestList := make([]string, 3, 5)
fmt.Printf("Panjang: %d, Kapasitas: %d\n", len(guestList), cap(guestList))
// Output: Panjang: 3, Kapasitas: 5
  • len() memberitahu kita berapa banyak tamu yang saat ini ada di daftar kita.
  • cap() memberitahu kita berapa banyak tamu daftar kita dapat menampung sebelum perlu tumbuh.

Anggap len() sebagai jumlah kursi yang saat ini disiapkan, dan cap() sebagai jumlah kursi yang tersedia di ruang pesta.

Slice nil

kadang-kadang, Anda mungkin mendeklarasikan slice tapi belum menginisialisasinya. Ini disebut slice nil.

var emptyList []string
fmt.Println(emptyList == nil) // Output: true

Slice nil adalah seperti memiliki ide daftar tamu tapi belum membuat daftar itu sendiri. Itu sepenuhnya valid dan dapat berguna dalam situasi tertentu!

Subslicing

Subslicing adalah seperti membuat seksi VIP di dalam pesta Anda. Anda dapat memilih sebagian slice yang ada untuk membuat yang baru.

fullGuestList := []string{"Alice", "Bob", "Charlie", "David", "Eve"}
vipGuests := fullGuestList[1:4]
fmt.Println(vipGuests) // Output: [Bob Charlie David]

Di sini, kita memilih tamu dari indeks 1 hingga 3 (ingat, indeks akhir eksklusif) untuk menjadi tamu VIP.

Fungsi append() dan copy()

append()

Fungsi append() adalah seperti memiliki penjaga gerbang yang dapat menambahkan tamu baru ke pesta Anda.

guestList := []string{"Alice", "Bob"}
guestList = append(guestList, "Charlie")
fmt.Println(guestList) // Output: [Alice Bob Charlie]

Anda bahkan dapat menambahkan beberapa tamu sekaligus:

guestList = append(guestList, "David", "Eve")
fmt.Println(guestList) // Output: [Alice Bob Charlie David Eve]

copy()

Fungsi copy() adalah seperti memiliki planner pesta yang dapat menduplikat daftar tamu Anda.

originalList := []string{"Alice", "Bob", "Charlie"}
newList := make([]string, len(originalList))
copiedElements := copy(newList, originalList)
fmt.Printf("Menyalin %d elemen. Daftar baru: %v\n", copiedElements, newList)
// Output: Menyalin 3 elemen. Daftar baru: [Alice Bob Charlie]

Tabel Metode Slice

Berikut adalah tabel praktis yang menggabungkan metode slice utama yang telah kita diskusikan:

Metode Deskripsi Contoh
make() Membuat slice make([]int, 5)
len() Mengembalikan panjang slice len(slice)
cap() Mengembalikan kapasitas slice cap(slice)
append() Menambahkan elemen ke slice slice = append(slice, 1, 2, 3)
copy() Menyalin elemen dari slice ke slice lain copy(destSlice, sourceSlice)
Subslicing Membuat slice baru dari slice yang ada newSlice := slice[1:4]

Dan itu saja, teman-teman! Anda baru saja mengambil langkah pertama ke dunia menakjubkan slices di Go. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba konsep ini. Buat daftar tamu pesta Anda sendiri, mainkan dengan menambahkan dan menyalin, dan segera Anda akan dapat slicing dan dicing melalui kode Go seperti seorang ahli!

Selamat coding, dan semoga slices Anda selalu sesuai ukuran kebutuhan Anda!

Credits: Image by storyset