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:

SumberIsiKapan dipakai
go.dev/docPusat dokumentasi: instalasi, cara kerja modul, topik per areaTitik awal semua pertanyaan umum
go.dev/tourTur interaktif langsung di browserMencicipi sintaks Go dalam satu sore
go.dev/doc/tutorialTutorial terbimbing proyek nyata (module, test, web service)Belajar dengan target aplikasi jadi
go.dev/doc/effective_goEsai gaya penulisan idiomatikMenulis kode yang terasa “Go banget”
pkg.go.devReferensi API seluruh package (stdlib + publik)Memeriksa perilaku fungsi, tipe, konstanta
go.dev/ref/specSpesifikasi bahasa formalMenyelesaikan debat teknis dengan definisi pasti
go.dev/ref/memModel memori GoMemahami jaminan visibilitas data antar-goroutine
go.dev/doc/faqTanya jawab desain bahasaMemahami mengapa Go memilih suatu keputusan
go.dev/blogArtikel rilis besar dan pola lanjutanMengikuti perkembangan ekosistem
go.dev/wikiWiki komunitas: GoProverbs, CodeReviewComments, ModulesPraktik 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 signatureContohArti
Receiver(b *Builder)Method milik *Builder; variabel b dipakai di badan fungsi
Parameters stringNilai 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:

bash
go doc fmt.Println

Output yang Dihasilkan:

text
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:

bash
go doc strings.Builder

Output yang Dihasilkan:

text
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 #