Daftar Kontak Dasar
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 66 dari 68.
Tantangan
MudahBuat sistem manajemen kontak yang menunjukkan cara struct, slice, dan fungsi bekerja bersama untuk mengatur dan menampilkan informasi kontak. Tantangan ini akan menguji kemampuanmu dalam mendefinisikan struktur data khusus, mengelola kumpulan data, dan menerapkan fungsi untuk memanipulasi data tersebut.
Kamu akan menerima dua input:
- Sebuah string yang berisi informasi kontak dengan format
"name1:phone1:email1,name2:phone2:email2,name3:phone3:email3"(misalnya,"Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com") - Sebuah string yang berisi kontak baru untuk ditambahkan dengan format
"name:phone:email"(misalnya,"David Wilson:555-0321:david@email.com")
Tugasmu adalah:
- Definisikan struct
Contactdengan tiga field string:Name,Phone, danEmail - Buat fungsi bernama
addContactyang menerima slice berisi structContactdan sebuahContactbaru, lalu mengembalikan slice baru yang berisi kontak tersebut - Buat fungsi bernama
displayContactsyang menerima slice berisi structContactdan mencetak informasi setiap kontak - Uraikan input pertama dengan memisahkannya berdasarkan koma untuk mendapatkan setiap entri kontak
- Untuk setiap entri kontak, pisahkan berdasarkan titik dua untuk mengambil nama, nomor telepon, dan email
- Buat struct
Contactdari data yang telah diuraikan dan simpan di dalam slice - Uraikan input kedua dengan memisahkannya berdasarkan titik dua untuk membuat kontak baru
- Tampilkan header aplikasi:
"=== CONTACT MANAGEMENT SYSTEM ===" - Tampilkan kontak awal menggunakan fungsi
displayContactsmilikmu dengan header:"Initial contact list:" - Tampilkan kontak baru yang ditambahkan:
"Adding new contact: [name] ([phone]) - [email]" - Gunakan fungsi
addContactmilikmu untuk menambahkan kontak baru ke slice - Tampilkan kontak yang telah diperbarui menggunakan fungsi
displayContactsmilikmu dengan header:"Updated contact list:" - Tampilkan statistik kontak:
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- Tampilkan pesan penyelesaian:
"Contact management operations completed successfully"
Fungsi displayContacts harus mencetak setiap kontak dengan format: "[index]. [name] - Phone: [phone], Email: [email]", dengan index dimulai dari 1.
Gunakan package strings untuk memisahkan string input dan package fmt untuk output berformat. Tantangan ini menunjukkan cara menggabungkan struct untuk mengatur data, slice untuk menyimpan kumpulan data, dan fungsi untuk mengatur kode. Ini adalah pola dasar yang digunakan di seluruh pemrograman Go.
Coba sendiri
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
// TODO: Definisikan struct Contact-mu di sini
// TODO: Implementasikan fungsi addContact di sini
// TODO: Implementasikan fungsi displayContacts di sini
func main() {
// Baca input menggunakan bufio.Scanner agar spasi dalam nama ditangani dengan benar
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
contactsInput := scanner.Text()
scanner.Scan()
newContactInput := scanner.Text()
// TODO: Tulis kodemu di bawah ini
// Urai input kontak dan buat struct Contact
// Pastikan slice parts memiliki cukup elemen sebelum mengaksesnya
// Urai input kontak baru
// Tampilkan judul aplikasi
// Tampilkan kontak awal
// Tambahkan kontak baru
// Tampilkan kontak yang sudah diperbarui
// Tampilkan statistik
// Tampilkan pesan penyelesaian
}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