Memeriksa keanggotaan
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 34 dari 68.
Sekarang kamu sudah bisa menambahkan elemen ke set, operasi penting berikutnya adalah memeriksa apakah elemen tertentu ada di dalam set. Di sinilah idiom "comma ok" Go menjadi sangat berguna.
Untuk memeriksa apakah suatu elemen ada di dalam set, kamu menggunakan sintaks yang sama seperti saat memeriksa key di dalam map:
_, ok := colors["red"]
if ok {
fmt.Println("Red is in the set")
} else {
fmt.Println("Red is not in the set")
}Garis bawah _ digunakan karena kita tidak peduli dengan nilai sebenarnya (yang selalu berupa struct kosong). Kita hanya peduli dengan variabel boolean ok, yang memberi tahu kita apakah key tersebut ada.
Kamu juga bisa menggunakan pola ini langsung dalam pernyataan if agar kodemu lebih ringkas:
if _, exists := colors["blue"]; exists {
fmt.Println("Blue is in the set")
}Pengujian keanggotaan ini cepat dan efisien, memanfaatkan implementasi map Go yang telah dioptimalkan untuk memberimu manfaat performa dari struktur data set yang sesungguhnya.
Tantangan
MudahBuat sistem verifikasi anggota tim yang memeriksa apakah orang tertentu merupakan bagian dari tim proyek menggunakan idiom set Go. Tantangan ini menunjukkan cara menggunakan idiom comma ok untuk menguji keanggotaan dalam set.
Kamu akan menerima dua input:
- String berisi anggota tim yang dipisahkan dengan koma (misalnya,
"Alice,Bob,Charlie,Diana,Eve") - String berisi orang-orang yang perlu diperiksa, dipisahkan dengan koma (misalnya,
"Bob,Frank,Alice,Grace,Charlie")
Tugasmu:
- Buat set menggunakan idiom Go
map[string]struct{}untuk menyimpan anggota tim - Parse string input pertama dengan memisahkannya berdasarkan koma untuk mendapatkan nama setiap anggota tim
- Tambahkan setiap anggota tim ke set-mu menggunakan literal struct kosong
{}sebagai nilai - Parse string input kedua dengan memisahkannya berdasarkan koma untuk mendapatkan daftar orang yang akan diverifikasi
- Untuk setiap orang yang perlu diperiksa, gunakan idiom comma ok
_, ok := teamSet[person]untuk menguji keanggotaan - Tampilkan hasil verifikasi untuk setiap orang yang diperiksa:
- Jika orang tersebut anggota tim:
"[person] is on the team" - Jika orang tersebut bukan anggota tim:
"[person] is not on the team"
- Jika orang tersebut anggota tim:
- Setelah memeriksa semua orang, tampilkan ringkasan:
"Team size: [team_member_count]""People checked: [people_checked_count]""Team members found: [found_count]""Non-team members: [not_found_count]"
Gunakan package strings untuk memisahkan string input berdasarkan koma. Tantangan ini menunjukkan cara idiom comma ok menyediakan cara yang aman dan efisien untuk memeriksa keanggotaan dalam set Go, dengan mengembalikan nilai sekaligus boolean yang menunjukkan apakah key tersebut ada.
Coba sendiri
package main
import (
"fmt"
"strings"
)
func main() {
// Baca input
var teamMembersInput string
var peopleToCheckInput string
fmt.Scanln(&teamMembersInput)
fmt.Scanln(&peopleToCheckInput)
// Uraikan string input
teamMembers := strings.Split(teamMembersInput, ",")
peopleToCheck := strings.Split(peopleToCheckInput, ",")
// TODO: Tulis kodemu di bawah ini
// Buat set menggunakan map[string]struct{}
// Tambahkan anggota tim ke set
// Periksa setiap orang menggunakan idiom comma ok
// Tampilkan hasil verifikasi dan ringkasannya
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan Perilaku6Go Idiomatis: set
Idiom set dalam GoMembuat setMenambahkan elemen ke setMemeriksa keanggotaanMenghapus elemen dari setMelakukan perulangan pada setUlasan: Nama pengguna unikLatihan sendiri: Compiler Go online