Dokumentasi Go tergolong salah satu yang paling rapi di industri, tetapi pemula sering tersesat karena tidak tahu pintu masuk yang tepat untuk tiap jenis pertanyaan. Pertanyaan “bagaimana caranya” butuh tutorial, pertanyaan “fungsi ini apa perilakunya” butuh referensi API, dan pertanyaan “bolehkah begini secara bahasa” butuh spesifikasi. Chapter ini memetakan seluruh sumber dokumentasi resmi, melatih cara membaca signature fungsi di pkg.go.dev, dan memperkenalkan go doc agar jawaban bisa didapat tanpa meninggalkan terminal.
Peta Dokumentasi Resmi #
Semua sumber di bawah ini dikelola tim Go dan selalu sinkron dengan versi rilis terbaru. Tabel berikut memetakan fungsi masing-masing:
| Sumber | Isi | Kapan dipakai |
|---|---|---|
go.dev/doc | Pusat dokumentasi: instalasi, cara kerja modul, topik per area | Titik awal semua pertanyaan umum |
go.dev/tour | Tur interaktif langsung di browser | Mencicipi sintaks Go dalam satu sore |
go.dev/doc/tutorial | Tutorial terbimbing proyek nyata (module, test, web service) | Belajar dengan target aplikasi jadi |
go.dev/doc/effective_go | Esai gaya penulisan idiomatik | Menulis kode yang terasa “Go banget” |
pkg.go.dev | Referensi API seluruh package (stdlib + publik) | Memeriksa perilaku fungsi, tipe, konstanta |
go.dev/ref/spec | Spesifikasi bahasa formal | Menyelesaikan debat teknis dengan definisi pasti |
go.dev/ref/mem | Model memori Go | Memahami jaminan visibilitas data antar-goroutine |
go.dev/doc/faq | Tanya jawab desain bahasa | Memahami mengapa Go memilih suatu keputusan |
go.dev/blog | Artikel rilis besar dan pola lanjutan | Mengikuti perkembangan ekosistem |
go.dev/wiki | Wiki komunitas: GoProverbs, CodeReviewComments, Modules | Praktik dan kebiasaan komunitas |
Membaca Signature Fungsi di pkg.go.dev #
Keterampilan paling sering dipakai adalah membaca signature fungsi. Halaman pkg.go.dev setiap package menampilkan bagian Index berisi seluruh identifier exported, dan setiap signature punya tiga bagian bermakna:
| Bagian signature | Contoh | Arti |
|---|---|---|
| Receiver | (b *Builder) | Method milik *Builder; variabel b dipakai di badan fungsi |
| Parameter | s string | Nilai masuk bertipe string, dikenal sebagai s |
| Nilai balik | (int, error) | Dua nilai keluar: jumlah byte dan error |
Signature lengkapnya func (b *Builder) WriteString(s string) (int, error) dibaca: “method WriteString pada pointer Builder menerima string s dan mengembalikan jumlah byte plus error”. Kebiasaan ini penting karena halaman pkg.go.dev juga merender Examples — potongan func Example... dari berkas test package yang menunjukkan pemakaian nyata; kita sudah mempelajarinya di chapter Example Test
.
go doc: Dokumentasi di Terminal #
Perintah go doc menampilkan dokumentasi yang sama dengan pkg.go.dev tanpa membuka browser. Dua contoh berikut dijalankan nyata di lingkungan Go 1.27:
go doc fmt.PrintlnOutput yang Dihasilkan:
package fmt // import "fmt"
func Println(a ...any) (n int, err error)
Println formats using the default formats for its operands and writes to
standard output. Spaces are always added between operands and a newline
is appended. It returns the number of bytes written and any write error
encountered.Mengganti argumen dengan sebuah tipe memperlihatkan seluruh method miliknya:
go doc strings.BuilderOutput yang Dihasilkan:
package strings // import "strings"
type Builder struct {
// Has unexported fields.
}
A Builder is used to efficiently build a string using Builder.Write methods.
It minimizes memory copying. The zero value is ready to use. Do not copy a
non-zero Builder.
func (b *Builder) Cap() int
func (b *Builder) Grow(n int)
func (b *Builder) Len() int
func (b *Builder) Reset()
func (b *Builder) String() string
func (b *Builder) Write(p []byte) (int, error)
func (b *Builder) WriteByte(c byte) error
func (b *Builder) WriteRune(r rune) (int, error)
func (b *Builder) WriteString(s string) (int, error)Output kedua ini sekaligus melatih membaca signature: baris func (b *Builder) WriteString(s string) (int, error) persis pola yang kita bedah pada bagian sebelumnya, dan daftar method yang tampil membantu memilih fungsi tanpa membuka halaman web.
Spesifikasi Bahasa dan Model Memori #
Spesifikasi bahasa (go.dev/ref/spec) adalah definisi resmi tata bahasa Go: setiap aturan tentang statement, ekspresi, dan tipe ada di sana dengan rumusan hukum yang padat. Dokumen ini memang terasa kering — tujuannya menyelesaikan perbedaan tafsir, bukan mengajarkan. Model memori (go.dev/ref/mem) berperan serupa untuk concurrency: dokumen ini menetapkan kapan penulisan variabel di satu goroutine dijamin terlihat oleh goroutine lain, fondasi yang kita pakai di chapter Race Condition
.
Menemukan Informasi Versi #
Setiap rilis Go besar punya halaman release notes: go.dev/doc/go1.27 untuk Go 1.27 misalnya, memuat daftar perubahan bahasa, standard library, dan tooling. Arsip artikel rilis lengkap tersedia di go.dev/blog/all yang mengurutkan seluruh artikel blog dari yang terbaru. Kedua sumber ini adalah tempat pertama yang layak dicek ketika perilaku compiler berbeda dari buku lama yang kita baca.
Pola Belajar Bertingkat #
Kombinasi sumber di atas paling efektif dipakai bertingkat, dari yang paling ramah pemula ke yang paling presisi:
Mulai dari go.dev/tour untuk merasakan sintaks, lanjut ke go.dev/doc/tutorial untuk membangun proyek utuh, angkat pemahaman lewat go.dev/doc dan Effective Go, gali detail API di pkg.go.dev, dan tuntaskan keraguan di spesifikasi. Posisi kita di tangga ini menentukan sumber yang paling hemat waktu untuk dibuka.
Membaca dokumentasi adalah keterampilan yang terasah lewat kebiasaan, dan peta di atas akan menuntun kita menuju halaman yang tepat. Namun dokumentasi tidak membantu ketika kode sudah benar menurut tulisan tetapi berperilaku salah — saat itulah kita perlu metode debugging yang sistematis, topik chapter Panduan Debugging .
Referensi #
- Documentation — pusat dokumentasi resmi Go.
- pkg.go.dev — referensi API seluruh package.
- The Go Programming Language Specification — spesifikasi bahasa.
- Effective Go — esai gaya idiomatik Go.