Panduan untuk Pemula: Slices di Go

Hai teman-teman masa depan pemrogram Go! Hari ini, kita akan melihat salah satu struktur data yang paling fleksibel dan kuat di Go: slices. Bayangkan slices seperti pisau multifungsi di dunia pemrograman Go – mereka fleksibel, efisien, dan setelah Anda menguasai mereka, Anda akan berpikir bagaimana Anda pernah menulis kode tanpanya!

Go - Slice

Apa Itu Slice?

Sebelum kita masuk ke detil, mari kita buat landasan. Bayangkan Anda sedang merencanakan pesta ( tentu saja pesta pemrograman! ). Anda butuh daftar tamu, tapi Anda tidak yakin berapa banyak orang yang akan datang. Ini tempat slices berbisik! Mereka seperti daftar tamu dinamis yang dapat bertambah atau berkurang sesuai kebutuhan.

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

Mendefinisikan Slice

Mari kita mulai dengan membuat slice pertama kita. Ada beberapa cara untuk melakukan ini, mari kita jelajahi 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 seperti planner pesta kita, mempersiapkan 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 siap pakai!

Metode 3: Mengiris array yang sudah 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 sudah ada. Itu seperti memilih tiga orang pertama dari ruang pesta kita menjadi tamu VIP.

Fungsi len() dan cap()

Sekarang kita memiliki 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 saat ini di daftar kita.
  • cap() memberitahu kita berapa banyak tamu daftar kita dapat menampung sebelum perlu tumbuh.

Bayangkan 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 menginisialisasikannya. Ini disebut slice nil.

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

Slice nil 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 dalam pesta Anda. Anda dapat memilih bagian dari slice yang sudah 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) menjadi tamu VIP.

Fungsi append() dan copy()

append()

Fungsi append() adalah seperti memiliki petugas pengawal 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 menduplikasi 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 penting 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 sudah ada newSlice := slice[1:4]

Dan itu saja, teman-teman! Anda baru saja mengambil langkah pertama ke dunia menakjubkan slice Go. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba konsep ini. Buat daftar tamu pesta Anda sendiri, mainkan dengan penambahan dan penyalinan, dan segera Anda akan dapat memotong dan memotong kode Go seperti seorang ahli!

Selamat pemrograman, dan semoga slice Anda selalu sesuai ukuran kebutuhan Anda!

Credits: Image by storyset