Belajar Pemrograman dengan Go
Pengantar yang ramah pemula dan praktis tentang bahasa pemrograman Go. Kursus ini disusun dalam pelajaran-pelajaran kecil yang mudah dikelola dengan tema eksplorasi luar angkasa, mencakup pemrograman imperatif, tipe data, fungsi, metode, koleksi, status, dan konkurensi.
Pelajaran
Gambaran Umum Kursus
📚 Ringkasan Konten
Pengantar yang ramah pemula dan praktis untuk bahasa pemrograman Go. Kursus ini disusun dalam pelajaran-pelajaran kecil yang mudah dikelola dengan tema eksplorasi luar angkasa, mencakup pemrograman imperatif, tipe data, fungsi, metode, koleksi, status, dan konkurensi.
Temukan kegembiraan dalam menulis kode dengan Go melalui pelajaran-pelajaran kecil dan tujuh proyek akhir berbasis eksplorasi luar angkasa.
Penulis: Nathan Youngman, Roger Peppé
Ucapan Terima Kasih: Jennifer Stout, Marina Michaels, Matthew Merkes, Joel Kotarski, Aleksandar Dragosavljević, Renée French, Olga Shalakhina, Erick Zelaya, April Milne, Monica Kamsvaag.
🎯 Tujuan Pembelajaran
- Mendefinisikan bahasa pemrograman Go dan penggunaan utamanya.
- Menjelaskan peran kompiler Go dan keunggulannya dibandingkan interpreter.
- Menavigasi Go Playground untuk menulis, mengompilasi, dan menjalankan kode.
- Mengatur struktur kode Go dengan benar menggunakan gaya "one true brace style" yang wajib agar terhindar dari kesalahan sintaks.
- Mengelola data menggunakan berbagai teknik deklarasi variabel dan operator penugasan aritmetika.
- Menghasilkan angka acak semu dan menerapkan logika kondisional menggunakan percabangan dan operator logika.
- Mendeklarasikan dan memformat variabel floating-point menggunakan
float32danfloat64dengan lebar dan presisi tertentu. - Mengidentifikasi dan mengatasi kesalahan yang disebabkan oleh ketidakakuratan floating-point dan pembatasan integer (integer wrap-around).
- Menggunakan paket
bigdan konstanta tak-tertanda untuk menangani angka yang melebihi batas ukuran bit standar. - Mendefinisikan dan memanggil fungsi menggunakan parameter, argumen, dan sintaks variadic.
🔹 Pelajaran 1: Meluncur ke Orbit
Ringkasan: Pelajaran ini memperkenalkan Go, bahasa pemrograman modern yang digunakan dalam komputasi awan. Siswa akan belajar perbedaan dasar antara sifat kompilasi Go dan bahasa yang di-interprete, cara menggunakan Go Playground untuk eksperimen langsung, serta struktur dasar program Go yang melibatkan paket dan fungsi main.
Hasil Pembelajaran:
- Mendefinisikan bahasa pemrograman Go dan penggunaan utamanya.
- Menjelaskan peran kompiler Go dan keunggulannya dibandingkan interpreter.
- Menavigasi Go Playground untuk menulis, mengompilasi, dan menjalankan kode.
🔹 Pelajaran 2: Logika Pusat Misinya
Ringkasan: Pelajaran ini memperkenalkan blok-blok dasar pemrograman Go, dengan fokus pada cara mengatur kode dan mengendalikan eksekusinya. Siswa akan belajar gaya "one true brace style", titik masuk program, lanjut ke singkatan deklarasi variabel dan operator matematika, serta menyelesaikannya dengan logika pengambilan keputusan menggunakan Boolean, perbandingan, dan percabangan.
Hasil Pembelajaran:
- Mengatur kode Go dengan benar menggunakan gaya "one true brace style" yang wajib agar terhindar dari kesalahan sintaks.
- Mengelola data menggunakan berbagai teknik deklarasi variabel dan operator penugasan aritmetika.
- Menghasilkan angka acak semu dan menerapkan logika kondisional menggunakan percabangan dan operator logika.
🔹 Pelajaran 3: Fisika Data Luar Angkasa
Ringkasan: Pelajaran ini menjelajahi bagaimana Go menangani data numerik, mulai dari presisi fraksional bilangan floating-point hingga skala besar yang dibutuhkan untuk jarak astronomi. Siswa akan belajar mengelola keterbatasan memori komputer, termasuk ketidakakuratan floating-point dan pembatasan integer (integer wrap-around), sambil menguasai konversi tipe secara eksplisit dan penggunaan paket big untuk ukuran numerik yang "tidak biasa".
Hasil Pembelajaran:
- Mendeklarasikan dan memformat variabel floating-point menggunakan
float32danfloat64dengan lebar dan presisi tertentu. - Mengidentifikasi dan mengatasi kesalahan yang disebabkan oleh ketidakakuratan floating-point dan pembatasan integer (integer wrap-around).
- Menggunakan paket
bigdan konstanta tak-tertanda untuk menangani angka yang melebihi batas ukuran bit standar.
🔹 Pelajaran 4: Membangun Modul Modular
Ringkasan: Pelajaran ini membahas blok dasar program Go: fungsi, tipe khusus, dan metode. Siswa akan belajar cara mengemas logika untuk digunakan kembali, mendefinisikan tipe baru dengan perilaku tertentu, serta memanfaatkan fungsi tingkat pertama—termasuk closure dan fungsi anonim—untuk membuat kode yang fleksibel dan modular. Pelajaran diakhiri dengan proyek akhir praktis tentang tabel konversi suhu.
Hasil Pembelajaran:
- Mendefinisikan dan memanggil fungsi menggunakan parameter, argumen, dan sintaks variadic.
- Membedakan antara identifikasi yang diekspor dan tidak diekspor menggunakan aturan penamaan Go.
- Menciptakan tipe khusus dan melampirkan perilaku padanya menggunakan metode dan penerima (receiver).
🔹 Pelajaran 5: Memuat Ruang Kargo
Ringkasan: Pelajaran ini membahas struktur data penting dalam Go untuk mengelola kumpulan informasi. Mulai dari array berukuran tetap dan perilaku salin memori mereka, hingga slice dinamis yang berfungsi sebagai jendela fleksibel terhadap data, dan akhirnya ke map untuk pencarian pasangan kunci-nilai yang efisien. Unit ini berakhir dengan proyek akhir "Permainan Hidup", yang menunjukkan bagaimana menggunakan slice multi-dimensi untuk mensimulasikan sistem kompleks.
Hasil Pembelajaran:
- Mendeklarasikan, menginisialisasi, dan melakukan iterasi pada array berukuran tetap dan grid multi-dimensi.
- Memanipulasi slice menggunakan rentang indeks dan pertumbuhan dinamis melalui fungsi
append. - Mengelola efisiensi memori dengan membedakan antara panjang dan kapasitas, serta mengalokasikan koleksi lebih awal dengan
make.
🔹 Pelajaran 6: Merancang Habitat Mars
Ringkasan: Pelajaran ini memperkenalkan pendekatan Go dalam mengorganisasi data dan perilaku yang kompleks. Siswa akan belajar cara mengelompokkan berbagai tipe data menjadi struktur (struct), menginisialisasinya menggunakan literal komposit, serta mengelola perilakunya melalui metode dan fungsi pembuat (constructor). Pelajaran ini juga menjelajahi filosofi desain unik Go: mengutamakan komposisi daripada pewarisan, serta menggunakan antarmuka implisit untuk mencapai polimorfisme.
Hasil Pembelajaran:
- Mendefinisikan, menginisialisasi, dan menyalin struktur untuk mengelola data koordinat Mars yang kompleks dan data rover.
- Mengkodekan struktur Go ke format JSON menggunakan tag struct untuk pertukaran data yang disesuaikan.
- Menerapkan metode, fungsi pembuat, dan embed struktur untuk membangun kode yang dapat digunakan kembali dan terorganisir.
🔹 Pelajaran 7: Menavigasi Lubang Gopher
Ringkasan: Pelajaran ini mengeksplorasi kekuatan dan keamanan indireksi dalam Go, dengan fokus pada bagaimana pointer memungkinkan mutasi data yang efisien dan manajemen memori. Memberikan kerangka kerja kuat untuk pemrograman defensif dengan mengajarkan siswa cara menangani nilai nil, mengelola sumber daya dengan defer, serta menerapkan pola penanganan kesalahan yang umum—yang berakhir pada penerapan aturan ini pada mesin validasi Sudoku.
Hasil Pembelajaran:
- Menggunakan tanda ampersand (
&) dan asterisk (*) untuk mengelola alamat memori dan mengakses nilai yang ditunjuk. - Menerapkan parameter dan penerima pointer untuk memungkinkan mutasi data dalam fungsi dan metode.
- Menavigasi nilai
nildi dalam slice, map, dan antarmuka tanpa menyebabkan panic runtime.
🔹 Pelajaran 8: Komunikasi Multi-Rover
Ringkasan: Pelajaran ini memperkenalkan primitif konkurensi inti dalam Go: goroutine dan channel. Menjelajahi cara menjalankan tugas secara independen, berkomunikasi secara aman di antara mereka, serta mengelola status bersama menggunakan Mutex untuk menghindari kondisi ras (race condition). Pelajaran diakhiri dengan proyek akhir yang mensimulasikan rover Mars yang bergerak di atas grid dan melaporkan temuan.
Hasil Pembelajaran:
- Meluncurkan dan mengelola tugas konkuren menggunakan kata kunci
go. - Menerapkan komunikasi aman antar goroutine menggunakan channel dan pernyataan
select. - Membangun pipeline data dan mengelola siklus hidup goroutine dengan menutup channel.