Hapus Elemen
Pelajaran 14 dari 21 dalam kursus Slice dan Map di Go di Coddy.
Sejauh ini, kita telah mempelajari cara menambahkan elemen ke slice, menyalin slice, membandingkan slice, dan mendapatkan panjang slice.
Sekarang, pertanyaannya: Bagaimana cara menghapus elemen tertentu dari slice?
Sayangnya, tidak ada fungsi bawaan untuk tugas ini, tetapi jika kita menggabungkan hal-hal yang telah kita pelajari, kita bisa melakukan operasi ini.
Misalkan kita memiliki slice seperti ini:
books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}Bisakah kamu memikirkan apa yang bisa kita lakukan jika kita perlu mendapatkan slice baru tanpa elemen tertentu, misalnya, menghapus "PostgreSQL"?
Di sini kita bisa menggunakan operator slice, jika kamu ingat:
books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}
fmt.Println(books[:4])
fmt.Println(books[5:])Kita akan mendapatkan dua slice seperti ini:
[Golang JavaScript Java Python]
[TypeScript]Di sini, kita berhasil menghapus elemen "PostgreSQL", tetapi kita perlu menggabungkan slice-slice ini menjadi satu. Jadi, kita bisa menggunakan fungsi <strong>append</strong> untuk menggabungkan kedua slice:
books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}
books = append(books[:4], books[5:]...)
fmt.Println(books)Dalam kode ini, kita menggunakan fungsi <strong>append</strong> untuk menambahkan slice kedua (<strong>books[5:]</strong>) ke bagian pertama (<strong>books[:4]</strong>). Perhatikan bahwa kita menggunakan <strong>...</strong> untuk mengubah bagian kedua menjadi elemen-elemen terpisah agar bisa ditambahkan ke bagian pertama.
Hasilnya adalah:
[Golang JavaScript Java Python TypeScript]Kita berhasil menghapus item "PostgreSQL" dari slice <strong>books</strong>.
Tantangan
MudahTulis program yang menerima input dari pengguna dan menghapus item dari slice pada indeks yang ditunjukkan oleh angka yang diberikan pengguna untuk dihapus.
Coba sendiri
package main
import "fmt"
func main() {
// Ambil input dari pengguna. Jangan ubah ini!
var x int
fmt.Scanln(&x)
// Definisikan slice. Jangan ubah ini!
lang := []string{"Rust", "Java", "JavaScript", "Golang", "Haskell", "C#"}
// Hapus elemen pada indeks yang ditentukan
// Cetak slice yang telah diperbarui
}Semua pelajaran di Slice dan Map di Go
3Cara Kerja Slice
Slice adalah arrayBuat Slice dengan makeSalin SliceHapus ElemenTantangan Ulasan #1Tantangan Ulasan #2Latihan sendiri: Compiler Go online