Menu
CoddyTech

Daftar Kontak Dasar

Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 66 dari 68.

challenge icon

Tantangan

Mudah

Buat 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:

  1. Definisikan struct Contact dengan tiga field string: Name, Phone, dan Email
  2. Buat fungsi bernama addContact yang menerima slice berisi struct Contact dan sebuah Contact baru, lalu mengembalikan slice baru yang berisi kontak tersebut
  3. Buat fungsi bernama displayContacts yang menerima slice berisi struct Contact dan mencetak informasi setiap kontak
  4. Uraikan input pertama dengan memisahkannya berdasarkan koma untuk mendapatkan setiap entri kontak
  5. Untuk setiap entri kontak, pisahkan berdasarkan titik dua untuk mengambil nama, nomor telepon, dan email
  6. Buat struct Contact dari data yang telah diuraikan dan simpan di dalam slice
  7. Uraikan input kedua dengan memisahkannya berdasarkan titik dua untuk membuat kontak baru
  8. Tampilkan header aplikasi: "=== CONTACT MANAGEMENT SYSTEM ==="
  9. Tampilkan kontak awal menggunakan fungsi displayContacts milikmu dengan header: "Initial contact list:"
  10. Tampilkan kontak baru yang ditambahkan: "Adding new contact: [name] ([phone]) - [email]"
  11. Gunakan fungsi addContact milikmu untuk menambahkan kontak baru ke slice
  12. Tampilkan kontak yang telah diperbarui menggunakan fungsi displayContacts milikmu dengan header: "Updated contact list:"
  13. Tampilkan statistik kontak:
    • "=== CONTACT STATISTICS ==="
    • "Total contacts: [number_of_contacts]"
    • "Contacts added this session: 1"
  14. 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

Latihan sendiri: Compiler Go online