Standard library Go termasuk yang paling lengkap di industri: format teks, I/O berkas, jaringan, kriptografi, hingga testing tersedia tanpa satu pun dependensi eksternal. Filosofi batteries included inilah yang membuat program Go biasa selesai hanya dengan standard library. Chapter ini memetakan package yang paling sering dipakai, dikelompokkan per kategori, dan menghubungkan setiap package ke chapter course yang membahasnya secara mendalam. Gunakan peta ini sebagai daftar isi teknis: cari kebutuhan Anda di kategori yang sesuai, lalu lanjut ke chapter terkait.
Format dan I/O #
Kategori ini menangani interaksi paling dasar: mencetak teks dan mengakses berkas. Package io mendefinisikan dua interface legendaris — io.Reader dan io.Writer — yang menjadi bahasa bersama bagi seluruh utilitas I/O di Go.
| Package | Kegunaan | Dibahas di |
|---|---|---|
fmt | Cetak terformat, Sprintf, baca input dengan verb %v, %s, %d | Package fmt |
os | Akses berkas, argument program (os.Args), environment variable, proses | Package os |
io | Abstraksi Reader, Writer, utilitas seperti io.Copy dan io.EOF | io dan Utilitas io |
bufio | Pembungkus buffered untuk scanner dan pembacaan efisien | Package bufio |
path/filepath | Manipulasi path berkas yang portabel antar sistem operasi | filepath dan path |
embed | Menyematkan berkas statis ke dalam binary saat kompilasi | Package embed |
flag | Parsing opsi dan argumen command line | Package flag |
String dan Teks #
Go menyimpan string sebagai byte UTF-8 immutable, sehingga pengolah teksnya bekerja presisi di level byte maupun karakter. Kategori ini menutup 90% kebutuhan pengolahan teks sehari-hari.
| Package | Kegunaan | Dibahas di |
|---|---|---|
strings | Pemotongan, pencarian, penggabungan (Builder, Contains, Split) | Package strings |
strconv | Konversi string ke angka dan sebaliknya (Atoi, Itoa) | Package strconv |
bytes | Operasi ala strings untuk data byte | Package bytes |
regexp | Pencocokan pola regular expression | Regular Expression |
unicode/utf8 | Dekode dan hitung rune pada string UTF-8 | UTF-8 dan Unicode |
Encoding dan Serialisasi #
Ketika data harus meninggalkan proses — dikirim lewat jaringan atau disimpan ke berkas — kategori ini mengubah struct menjadi bytes dan sebaliknya. Format JSON dibahas paling dalam karena menjadi bahasa pertukaran data paling umum di web.
| Package | Kegunaan | Dibahas di |
|---|---|---|
encoding/json | Marshal dan unmarshal JSON, termasuk struct tag | JSON |
encoding/xml | Encoding data ke bentuk XML | XML |
encoding/csv | Baca dan tulis berkas CSV | CSV |
encoding/gob | Encoding biner khusus nilai Go, efisien antar proses Go | Encoding gob |
encoding/base64 | Enkode data ke teks base64 | umum; dibahas singkat di kelas encoding |
Waktu, Matematika, dan Koleksi #
| Package | Kegunaan | Dibahas di |
|---|---|---|
time | Waktu, durasi, timer, dan parsing format | Package time |
math | Konstanta dan fungsi matematika (Sqrt, MaxInt64) | math dan math/rand |
math/rand/v2 | Bilangan acak deterministik dan acak aman | math dan math/rand |
slices | Utilitas slice generik: Sort, Contains, Concat | sort dan slices |
sort | Pengurutan klasik sebelum era generics | sort dan slices |
maps | Utilitas map generik: Keys, Values, Equal | Package maps |
Concurrency dan Konteks #
| Package | Kegunaan | Dibahas di |
|---|---|---|
sync | Mutex, RWMutex, WaitGroup, Once untuk sinkronisasi | sync.Mutex dan RWMutex |
sync/atomic | Operasi atomik tanpa lock untuk counter dan flag | Atomic Operation |
context | Pembatalan, timeout, dan penyebaran nilai lintas goroutine | Context |
Jaringan dan Web #
| Package | Kegunaan | Dibahas di |
|---|---|---|
net/http | HTTP client dan server, ServeMux berpola | net/http Server |
net/http/httptest | Server dan response tiruan untuk pengujian | httptest |
database/sql | Antarmuka SQL generik dengan connection pool | database/sql |
Testing dan Logging #
| Package | Kegunaan | Dibahas di |
|---|---|---|
testing | Unit test, benchmark, fuzzing, dan example test | Unit Test |
log | Logging klasik berbasis teks | log dan log/slog |
log/slog | Structured logging dengan level dan handler | log/slog |
text/template | Template berbasis teks untuk hasilkan dokumen | text/template |
html/template | Template HTML dengan pelindung XSS otomatis | html/template |
errors | Membuat, membungkus, dan memeriksa error | Error Interface |
Membaca Dokumentasi Resmi #
Dokumentasi kanonik seluruh package berada di pkg.go.dev
: setiap package, fungsi, dan tipe dilengkapi contoh yang dapat dijalankan. Dari terminal, perintah go doc menampilkan dokumentasi yang sama tanpa membuka peramban — go doc fmt.Println langsung menampilkan penjelasan fungsi di terminal. Penggunaan go doc dibahas pada chapter go doc
.
Satu alasan kuat memaksimalkan standard library adalah janji kompatibilitas Go 1: API yang sudah dirilis tidak akan dipecahkan pada rilis berikutnya, sehingga kode yang hanya bergantung padanya dapat dibangun bertahun-tahun tanpa perombakan. Ketika kebutuhan melebihi standard library — ORM khusus, framework CLI, driver database — barulah dependensi eksternal masuk, dan pengelolaannya dibahas pada chapter Dependency Management .
Referensi #
- pkg.go.dev — indeks dokumentasi resmi seluruh standard library.
- Tutorial resmi Go — tutorial bertahap yang memakai package-package di atas.
Dari fungsi bawaan hingga package, rujukan berikutnya turun ke level perkakas: seluruh perintah go beserta contoh pemakaiannya dirangkum pada chapter Perintah go
.