Setiap komunitas teknis menumbuhkan kosakata sendiri, dan ekosistem Go tidak terkecuali: kata seperti goroutine, shadowing, atau vendoring muncul di dokumentasi, forum, dan code review setiap hari. Kosakata ini bukan hiasan — setiap istilah merangkum satu perilaku teknis konkret yang pernah kita bahas di course ini. Glossary berikut merangkum 44 istilah dalam enam kelompok, masing-masing dengan definisi satu sampai dua kalimat dan tautan ke chapter yang membahasnya secara mendalam. Gunakan daftar ini sebagai peta cepat saat membaca dokumentasi resmi atau diskusi komunitas.
Bahasa dan Tipe #
Kelompok ini memuat istilah yang lahir dari aturan bahasa Go sendiri — dari cara variabel diisi hingga bagaimana compiler menempatkan data di memori.
| Istilah | Definisi | Dibahas di |
|---|---|---|
| Zero value | Nilai yang diisi compiler pada variabel tanpa nilai awal: 0 untuk angka, "" untuk string, nil untuk tipe referensi | Zero Value |
| Blank identifier | Identifier _ yang membuang nilai; pemakaiannya menetralkan error variabel tak terpakai | Variabel |
| Shadowing | Deklarasi variabel bernama sama pada scope dalam sehingga menutupi variabel scope luar | Variabel |
| Iota | Konstanta penghitung yang bertambah satu pada tiap baris const dalam satu blok | Konstanta |
| Closure | Fungsi yang menangkap referensi variabel di sekitarnya sehingga variabel tersebut tetap hidup setelah scope asalnya berakhir | Closure |
| Receiver | Variabel yang mengikat method ke tipe pemiliknya, ditulis di antara keyword func dan nama method | Method |
| Method set | Himpunan method yang melekat pada sebuah tipe; receiver nilai dan pointer memiliki himpunan yang berbeda | Method Set |
| Embedding | Menyematkan struct atau interface ke dalam struct lain sehingga method-nya terpromosi otomatis | Embedded Struct |
| Interface satisfaction | Tipe memenuhi interface secara implisit dengan mengimplementasikan seluruh methodnya, tanpa kata implements | Implementasi Implisit |
| Type assertion | Operasi mengambil kembali nilai konkret dari interface dengan bentuk v := i.(T) | Type Assertion |
| Type switch | Percabangan yang menguji tipe dinamis nilai interface pada tiap case | Type Switch |
| Escape analysis | Analisis compiler yang menentukan variabel aman dialokasikan di stack atau harus dipindahkan ke heap | Escape Analysis |
| Garbage collection | Proses runtime yang mengklaim kembali memori tidak lagi dirujuk oleh program | Garbage Collection |
Concurrency #
Kelompok kedua adalah kosakata model konkurensi Go yang dibangun di atas dua primitif: goroutine sebagai unit eksekusi dan channel sebagai jalur komunikasinya. Slogan “jangan berkomunikasi dengan berbagi memori, bagikan memori dengan berkomunikasi” merangkum cara kerja seluruh istilah di tabel ini.
| Istilah | Definisi | Dibahas di |
|---|---|---|
| Goroutine | Fungsi yang dijalankan ringan dan bersamaan oleh runtime, diawali keyword go | Goroutine |
| Channel | Saluran bertipe untuk mengirim dan menerima nilai antar goroutine | Channel |
| Buffer | Penyangga internal channel berkapasitas tertentu; pengiriman hanya menunggu bila penyangga penuh | Buffered Channel |
| Race condition | Dua goroutine mengakses memori yang sama tanpa sinkronisasi sehingga hasil bergantung urutan eksekusi | Race Condition |
| Deadlock | Sekumpulan goroutine saling menunggu selamanya sehingga program berhenti tanpa kemajuan | Channel |
| Select | Statement yang menunggu salah satu dari beberapa operasi channel siap dijalankan | select |
| Worker pool | Pola sejumlah goroutine pekerja tetap yang mengambil tugas dari sebuah channel | Worker Pool |
| Context cancellation | Penyebaran sinyal pembatalan dan timeout lintas pemanggilan melalui context.Context | Cancellation dan Timeout |
Error Handling #
Go memperlakukan error sebagai nilai biasa yang dikembalikan dan diperiksa, bukan exception yang melompat. Tiga istilah berikut adalah pola yang tumbuh di sekitar konvensi tersebut.
| Istilah | Definisi | Dibahas di |
|---|---|---|
| Sentinel error | Nilai error pra-dideklarasi sebagai penanda kondisi tertentu, misalnya io.EOF | Sentinel Error |
| Error wrapping | Membungkus error asli dengan konteks tambahan memakai verb %w agar bisa diurai dengan errors.Is | Error Wrapping |
| Panic dan recover | Mekanisme darurat menghentikan goroutine dan menangkapnya kembali dari dalam deferred function | Panic dan Recover |
Module dan Build #
Sejak Go 1.16, seluruh proyek hidup dalam module yang berversi semantik dan diunduh lewat proxy terverifikasi. Kelompok ini merangkum kosakata rantai pasok dependensi tersebut hingga binary akhir yang dihasilkannya.
| Istilah | Definisi | Dibahas di |
|---|---|---|
| Module | Unit distribusi berisi kumpulan package, satu go.mod, dan satu nomor versi | go.mod |
| Workspace | Kumpulan module lokal yang dikerjakan bersama melalui satu berkas go.work | go work |
| Module proxy | Server penampung salinan module agar unduhan cepat, tercache, dan terverifikasi checksum | Dependency Management |
| Vendoring | Menyalin seluruh dependensi ke direktori vendor/ agar build tidak bergantung unduhan jaringan | Dependency Management |
| Cross-compilation | Membangun binary untuk sistem operasi atau arsitektur lain hanya dengan menyetel GOOS dan GOARCH | Cross Compilation |
| Static binary | Binary mandiri yang menautkan seluruh dependensi sehingga berjalan tanpa pustaka sistem tambahan | Build Binary |
Testing #
Testing menyatu di dalam toolchain: perintah go test menjalankan unit test, benchmark, dan fuzzing dengan satu konvensi penamaan. Istilah berikut muncul begitu kita menulis berkas _test.go pertama.
| Istilah | Definisi | Dibahas di |
|---|---|---|
| Coverage | Persentase baris atau cabang kode yang dieksekusi oleh test | Coverage |
| Fuzzing | Pengujian otomatis yang memutasi input secara acak untuk menemukan panic tak terduga | Fuzzing |
| Benchmark | Fungsi berprefix Benchmark yang mengukur kinerja lewat go test -bench | Benchmark |
| Race detector | Mode toolchain -race yang mendeteksi akses memori bersama tanpa sinkronisasi saat runtime | Race Detector |
| Table-driven test | Pola test berupa tabel kasus input–ekspektasi yang diiterasi satu per satu | Table-Driven Test |
Web dan Operasional #
Kelompok penutup memuat istilah yang muncul saat aplikasi Go meninggalkan meja pengembang menuju produksi.
| Istilah | Definisi | Dibahas di |
|---|---|---|
| Middleware | Fungsi pembungkus handler yang menambah perilaku seperti logging atau autentikasi tanpa mengubah handler inti | Middleware |
| Health check | Endpoint pelaporan kesehatan proses yang dipantau orkestrator seperti Kubernetes | Health, Readiness, Liveness |
| Graceful shutdown | Penutupan server yang menyelesaikan permintaan berjalan sebelum proses keluar | Graceful Shutdown |
| Structured logging | Logging berformat pasangan kunci-nilai yang mudah disaring dan diolah mesin | Structured Logging |
| Distributed tracing | Pencatatan jejak satu permintaan lintas layanan dalam bentuk pohon span | Distributed Tracing |
| Metrics | Pengukuran numerik perilaku sistem — counter, gauge, histogram — yang dikumpulkan berkala | Metrics |
| Connection pool | Kumpulan koneksi database siap pakai yang dipinjam dan dikembalikan antar query | Connection Pool |
| Exit code | Status keluar proses yang dibaca skrip dan supervisor; nol berarti sukses | Exit Code |
| Profiling | Pengambilan profil CPU atau memori memakai pprof untuk menemukan titik lambat program | CPU Profiling |
Dari 44 istilah di atas, satu benang merah terlihat jelas: Go menamai setiap mekanismenya secara eksplisit agar percakapan teknis tetap presisi. Saat satu istilah terasa asing, tautan pada kolom terakhir membawa kita kembali ke chapter yang membahas konsepnya secara utuh — dari definisi dua kalimat di sini menuju contoh kode yang dapat dijalankan di sana.
Referensi #
- Effective Go — gaya idiomatik yang menjadi latar sebagian besar istilah di atas.
- FAQ Go — penjelasan desain di balik goroutine, interface, dan garbage collection.
Section Referensi dengan ini lengkap: sepuluh tabel rujukan mulai dari keyword hingga glossary siap dipakai setiap kali kita menulis, menguji, dan merilis program Go.