Pernah dengar Docker? Kubernetes? Terraform? Caddy? Hugo? Tools yang jadi backbone DevOps modern. Mereka punya satu kesamaan: ditulis dalam **Go**. Bahasa yang dibikin Google 2009 untuk gantiin C++ di backend mereka — sederhana banget (cuma 25 keyword), cepet (kompile ke machine code), dan punya concurrency built-in (goroutine) yang bikin backend developer tersenyum lebar.
💡 "Boring is good". Go sengaja dibuat minimalis — gak ada generics di awal (akhirnya ditambah Go 1.18), gak ada inheritance, gak ada exception. Filosofi: bahasa yang gak banyak feature = team gede gak ribut soal style. Hasilnya: codebase Go di Google/Uber/Discord konsisten antar developer + gampang onboarding.
Kenapa Belajar Go?
- Sederhana — Sintaks minimalis, mudah dibaca dan dipelajari
- Cepat — Dikompilasi langsung ke machine code, performa mendekati C
- Concurrency built-in — Goroutine dan channel membuat concurrent programming mudah
- Demand tinggi — Digunakan di Docker, Kubernetes, Terraform, dan banyak infrastruktur modern
Go di Web Development
Go sangat populer untuk backend dan microservices:
- Net/HTTP — Standard library yang sudah cukup powerful untuk web server
- Gin — Web framework ringan dan cepat
- Echo — Framework minimalis dengan performa tinggi
- Fiber — Terinspirasi Express.js, familiar untuk developer Node.js
Hello World
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Setiap program Go dimulai dengan package main dan fungsi main(). Package fmt digunakan untuk mencetak output ke konsol.
🎭 Analogi sehari-hari
Java/C++ = mobil mewah dengan ratusan fitur (manual transmission, banyak pilihan suspension, customizable). Go = mobil pickup tahan banting. Cuma 1 transmisi, 1 jenis ban, gak banyak pilihan — tapi reliable, hemat bahan bakar, mudah maintenance, semua mekanik bisa. Pickup gak akan menang lomba balap, tapi kalau buat angkut barang dari A ke B = pilihan terbaik.
⚠️ Jebakan yang sering ditemui
- Goroutine leak — gak ditutup proper = memory leak. Pakai context untuk cancel
- Error handling repetitif — `if err != nil { return err }` di mana-mana. Ini fitur, bukan bug (eksplisit)
- No generics dulu, sekarang ada — Go 1.18+ punya generics. Tapi banyak codebase lama tetap pakai pattern interface{}
- "Pakai Go untuk segalanya" — Go gak cocok untuk frontend, mobile native, atau script kecil. Tools yang spesifik
- Channel deadlock — common bug pemula. Test thoroughly, pakai `select` dengan timeout
TL;DR: Go = bahasa minimalis dari Google untuk backend + infrastructure. Cuma 25 keyword, kompile super cepat, goroutine bikin concurrency mudah. Backbone Docker/K8s/Terraform. Filosofi "boring is good" — gak banyak feature biar codebase konsisten. Cocok untuk microservices, CLI tools, network programming. Steeper curve dari Python/JS tapi lebih ringan dari Rust.