Proyek Akhir: Aplikasi Inventori

Menggabungkan struct, map, method, pointer, dan error dalam satu aplikasi.

Part 23 dari 23 ± 60 menit Gratis

Selamat sampai di proyek akhir!

Di bab ini kamu membangun inti sebuah aplikasi inventori toko dengan konsep dari seluruh course: struct, map, method dengan pointer receiver, error handling, dan slice.

Rancangan

type Inventori struct {
    stok map[string]int
}

Sebuah Inventori menyimpan jumlah stok tiap barang di sebuah map. Method yang dibutuhkan:

MethodTugas
------
Tambah(nama string, jumlah int)menambah stok (membuat barang baru jika belum ada)
Kurangi(nama string, jumlah int) errormengurangi stok; error bila barang tidak ada atau stok kurang
Stok(nama string) intmengembalikan jumlah stok (0 bila tidak ada)
Jenis() intjumlah jenis barang

Kenapa pointer receiver?

Tambah dan Kurangi mengubah isi inventori, jadi receiver-nya harus pointer (i *Inventori). (Map sendiri adalah reference type, tetapi konsisten memakai pointer receiver adalah kebiasaan yang baik untuk struct yang punya state.)

Constructor

func NewInventori() *Inventori {
    return &Inventori{stok: make(map[string]int)}
}

Map harus dibuat dengan make sebelum ditulisi.

Pesan error

Gunakan fmt.Errorf agar pesannya informatif:

return fmt.Errorf("stok %s kurang (tersedia %d, diminta %d)", nama, tersedia, jumlah)

dan untuk barang yang tidak ada: fmt.Errorf("barang %s tidak ditemukan", nama).

Langkah pengerjaan

  1. Tulis Tambah — cukup i.stok[nama] += jumlah (zero value map membuat ini aman!).
  2. Tulis Stok — membaca map langsung.
  3. Tulis Jenis — len(i.stok).
  4. Tulis Kurangi — periksa ada/tidak, periksa cukup/tidak, lalu kurangi.

Ide pengembangan setelah course

  • Simpan data ke file JSON dengan paket encoding/json.
  • Buat antarmuka CLI dengan bufio.Scanner atau paket flag.
  • Ubah menjadi REST API dengan net/http.
  • Tambahkan unit test dengan paket testing dan jalankan go test.
  • Lindungi map dengan sync.RWMutex agar aman dipakai banyak goroutine.

Setelah lulus bab ini, kerjakan quiz akhir. Nilai minimal 70 membuka sertifikat kelulusanmu. Selamat — kamu sudah menguasai dasar Go! 🎉

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X