Map Berisi Struct
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 26 dari 68.
Map menjadi sangat berguna saat kamu menyimpan struct sebagai nilai. Pola ini memungkinkan kamu mengatur data kompleks yang terstruktur menggunakan key yang bermakna agar mudah dicari dan diambil.
Saat kamu menggunakan struct sebagai nilai map, pada dasarnya kamu membuat kumpulan yang setiap key-nya menunjuk ke sebuah record data lengkap. Berikut cara mendeklarasikan dan menginisialisasi map seperti ini:
type Student struct {
ID int
Grade string
}
students := map[string]Student{
"Alice": {ID: 101, Grade: "A"},
"Bob": {ID: 102, Grade: "B"},
}Kamu bisa mengakses dan mengolah data struct melalui map, sama seperti operasi map lainnya. Untuk mendapatkan informasi siswa, kamu cukup menggunakan nama mereka sebagai kunci:
alice := students["Alice"]
fmt.Println(alice.ID) // mencetak: 101
fmt.Println(alice.Grade) // mencetak: APola ini sangat umum dalam aplikasi Go untuk menyimpan kumpulan data terkait, seperti profil pengguna, katalog produk, atau pengaturan konfigurasi saat kamu memerlukan data terstruktur dan akses cepat berbasis kunci.
Tantangan
MudahBuat sistem pengelolaan nilai siswa menggunakan map dengan struct sebagai nilai. Tantangan ini menunjukkan cara mengatur data siswa yang kompleks menggunakan kunci yang bermakna agar pencarian dan pengambilan data lebih efisien.
Kamu akan menerima dua input:
- String yang menunjukkan jumlah siswa (contohnya,
"4") - String yang berisi data siswa dengan format:
"name1:id1:grade1,name2:id2:grade2,name3:id3:grade3"(contohnya,"Alice:101:A,Bob:102:B,Charlie:103:C,Diana:104:A")
Tugasmu adalah:
- Tentukan struct
Studentdengan field berikut:ID(int), nomor ID siswaGrade(string), nilai huruf siswa
- Buat map dengan nama siswa (string) sebagai kunci dan struct
Studentsebagai nilai - Uraikan data siswa dari input kedua:
- Pisahkan input berdasarkan koma untuk mendapatkan setiap entri siswa
- Untuk setiap entri, pisahkan berdasarkan titik dua untuk memisahkan nama, ID, dan nilai
- Ubah string ID menjadi bilangan bulat
- Buat struct
Studentdan tambahkan ke map dengan nama sebagai kuncinya
- Tampilkan semua siswa menurut urutan alfabet nama dengan format:
"[name]: ID [id], Grade [grade]" - Hitung dan tampilkan statistik nilai:
- Hitung jumlah siswa yang memperoleh setiap nilai (A, B, C, D, F)
- Tampilkan jumlah untuk setiap nilai yang muncul dengan format:
"Grade [grade]: [count] students" - Tampilkan nilai dalam urutan alfabet (A, B, C, D, F)
- Cari dan tampilkan siswa dengan ID tertinggi menggunakan format:
"Highest ID: [name] ([id])" - Tampilkan jumlah total siswa:
"Total students: [count]"
Gunakan package strconv untuk mengubah string ID menjadi bilangan bulat, dan package sort untuk mengurutkan nama siswa menurut abjad. Tantangan ini menunjukkan cara map dengan nilai struct menyediakan cara yang efisien untuk mengatur dan mengakses kumpulan data kompleks menggunakan pengenal yang bermakna.
Coba sendiri
package main
import (
"fmt"
)
func main() {
// Baca input
var numStudentsStr string
var studentData string
fmt.Scanln(&numStudentsStr)
fmt.Scanln(&studentData)
// TODO: Definisikan struct Student di sini
// TODO: Buat map untuk menyimpan siswa (nama sebagai kunci, struct Student sebagai nilai)
// TODO: Uraikan data siswa dan isi map
// TODO: Tampilkan semua siswa berdasarkan nama dalam urutan alfabet
// TODO: Hitung dan tampilkan statistik nilai
// TODO: Cari dan tampilkan siswa dengan ID tertinggi
// TODO: Tampilkan jumlah seluruh siswa
}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 PerilakuLatihan sendiri: Compiler Go online