Map sebagai Set
Gunakan map untuk nilai unik
Map sebagai Set adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Go Tidak Memiliki Jenis Himpunan
Go tidak memiliki jenis himpunan bawaan. Cara idiomatis untuk memodelkan himpunan nilai unik adalah menggunakan peta dengan elemen himpunan sebagai kuncinya.
Peta Boolean
Salah satu pendekatan adalah map[string]bool. Keberadaan sebuah kunci (dan nilai true) berarti elemen tersebut ada dalam himpunan.
package main
import "fmt"
func main() {
set := map[string]bool{}
set["apple"] = true
set["banana"] = true
fmt.Println(set)
}Memeriksa Keanggotaan
Gunakan koma-ok atau baca boolean secara langsung untuk menguji keanggotaan.
package main
import "fmt"
func main() {
set := map[string]bool{"apple": true}
fmt.Println(set["apple"])
fmt.Println(set["cherry"])
}Peta Struct Kosong
Himpunan yang lebih hemat memori menggunakan map[string]struct{}. Struct kosong menggunakan nol byte, sehingga Anda hanya menyimpan kunci.
package main
import "fmt"
func main() {
set := map[string]struct{}{}
set["x"] = struct{}{}
_, ok := set["x"]
fmt.Println("x in set:", ok)
}Mengapa Struct Kosong
Nilai tidak pernah penting dalam sebuah himpunan; yang penting hanya kuncinya. struct{}{} menandakan bahwa Anda bermaksud mengabaikan nilai dan tidak menggunakan memori tambahan untuk setiap entri.
Menambahkan Elemen
Menambahkan kunci duplikat tidak berdampak apa pun, sehingga himpunan secara alami menjamin keunikan.
package main
import "fmt"
func main() {
set := map[string]struct{}{}
set["a"] = struct{}{}
set["a"] = struct{}{}
fmt.Println("size:", len(set))
}Menghapus Duplikasi
Salah satu penggunaan klasiknya adalah menghapus duplikasi dari slice. Tambahkan setiap elemen ke himpunan, lalu baca kembali kunci-kunci uniknya.
package main
import "fmt"
func main() {
input := []string{"a", "b", "a", "c", "b"}
set := map[string]struct{}{}
for _, v := range input {
set[v] = struct{}{}
}
fmt.Println("unique count:", len(set))
}Membangun Slice Unik
Gabungkan himpunan dengan slice hasil untuk mempertahankan urutan kemunculan pertama sekaligus menghapus duplikasi.
package main
import "fmt"
func main() {
input := []int{1, 2, 1, 3, 2}
seen := map[int]struct{}{}
result := []int{}
for _, v := range input {
if _, ok := seen[v]; !ok {
seen[v] = struct{}{}
result = append(result, v)
}
}
fmt.Println(result)
}Irisan Himpunan
Untuk menemukan elemen yang sama pada dua himpunan, iterasikan salah satunya dan pertahankan elemen yang ada pada himpunan lainnya.
package main
import "fmt"
func main() {
a := map[int]struct{}{1: {}, 2: {}, 3: {}}
b := map[int]struct{}{2: {}, 3: {}, 4: {}}
for k := range a {
if _, ok := b[k]; ok {
fmt.Println("common:", k)
}
}
}Menghapus dari Himpunan
Gunakan delete untuk mengeluarkan sebuah elemen dari himpunan.
package main
import "fmt"
func main() {
set := map[string]struct{}{"a": {}, "b": {}}
delete(set, "a")
_, ok := set["a"]
fmt.Println("a in set:", ok)
}Memilih bool atau struct{}
Keduanya dapat digunakan. Gunakan map[T]bool jika keterbacaan set[x] sebagai boolean membantu. Gunakan map[T]struct{} jika Anda ingin menegaskan bahwa nilai tidak penting dan menghemat memori pada himpunan berukuran besar.
Pemeriksaan Singkat
Mengapa map[string]struct{} sering lebih disukai daripada map[string]bool untuk himpunan?
Ringkasan
Peta sebagai himpunan:
- Go tidak memiliki jenis himpunan; gunakan peta dengan elemen sebagai kunci
map[T]boolataumap[T]struct{}- Sangat berguna untuk menghapus duplikasi dan menguji keanggotaan
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Map sebagai Set” gratis?
Ya — teks lengkap “Map sebagai Set” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Map sebagai Set”?
Gunakan map untuk nilai unik Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Map sebagai Set” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Bagian Dalam Map
- Memeriksa Keberadaan
- Map sebagai Set
- Iterasi dan Pengurutan