Bab 1 dari 10
Menyiapkan Go, Toolchain, dan Module
Tujuan Pembelajaran
Setelah bab ini, Anda mampu:
- memasang dan memverifikasi Go;
- mengenali peran perintah utama toolchain;
- membuat module dan program pertama;
- menjalankan, menguji, memformat, dan membangun program;
- memahami hubungan module, package, dan file sumber.
1. Memasang dan Memverifikasi Go
Unduh distribusi resmi yang sesuai sistem operasi, ikuti petunjuk pemasangan, lalu buka terminal baru. Verifikasi instalasi:
go version
go env GOROOT GOPATH GOMOD
GOROOT menunjuk instalasi Go. GOPATH adalah workspace global untuk cache module dan alat yang dipasang; kode aplikasi modern tidak perlu ditempatkan di dalamnya. GOMOD menunjukkan file go.mod aktif atau /dev/null ketika terminal berada di luar module.
Pastikan direktori biner Go tersedia pada PATH. Jangan mengubah GOROOT secara manual kecuali Anda memang mengelola instalasi khusus.
2. Toolchain Inti
| Perintah | Kegunaan |
|---|---|
go run . | Mengompilasi sementara dan menjalankan package utama |
go build . | Memeriksa kompilasi dan menghasilkan biner bila package adalah main |
go test ./... | Menjalankan pengujian seluruh package di module |
go fmt ./... | Memformat kode dengan gaya standar Go |
go vet ./... | Mendeteksi pola kode yang mencurigakan |
go mod tidy | Menyelaraskan dependensi di go.mod dan go.sum |
go doc fmt.Println | Membaca dokumentasi simbol |
Alur kerja sederhananya:
3. Membuat Module Pertama
Module adalah unit versi dan distribusi yang berisi satu atau lebih package. Buat proyek di direktori kosong:
mkdir halo-go
cd halo-go
go mod init example.com/halo-go
Perintah terakhir membuat go.mod:
module example.com/halo-go
go 1.23
Direktif go mengikuti versi bahasa yang dipilih toolchain Anda dan dapat berbeda dari contoh. Untuk proyek yang diterbitkan, path module biasanya sama dengan lokasi repositori. Untuk latihan lokal, path contoh tetap valid.
Buat main.go:
package main
import "fmt"
func main() {
fmt.Println("Halo, Go!")
}
Jalankan dan bangun:
go fmt ./...
go run .
go build .
package main dan fungsi main menandai program yang dapat dieksekusi. import "fmt" memakai package pustaka standar. Nama package berlaku per direktori: file .go biasa dalam satu direktori harus memakai nama package yang sama.
4. Module, Package, dan Import
Struktur kecil yang wajar:
halo-go/
├── go.mod
├── main.go
└── salam/
└── salam.go
Isi salam/salam.go:
package salam
func Pesan(nama string) string {
return "Halo, " + nama + "!"
}
Huruf awal kapital mengekspor Pesan agar dapat dipakai package lain. Ubah main.go:
package main
import (
"fmt"
"example.com/halo-go/salam"
)
func main() {
fmt.Println(salam.Pesan("Ayu"))
}
Import menggunakan path module ditambah subdirektori package, bukan path filesystem absolut.
5. Dependensi dan Reproduksibilitas
Ketika kode mengimpor module eksternal, perintah Go dapat mengunduh versinya dan mencatatnya di go.mod; checksum konten tersimpan di go.sum. Jalankan:
go mod tidy
go test ./...
Commit go.mod dan go.sum untuk aplikasi. Jangan mengedit go.sum manual. Cache dependensi bukan bagian proyek dan tidak perlu disalin.
Kesalahan Umum
- Menjalankan satu file dengan
go run main.gopada proyek multifile. Gunakango run .agar seluruh package dipertimbangkan. - Menaruh beberapa package biasa dalam satu direktori. Pisahkan package ke direktori berbeda.
- Menganggap
GOPATHsebagai lokasi wajib proyek. Module modern dapat berada di direktori mana pun. - Path import tidak cocok dengan
moduledigo.mod. Gunakan path module sebagai awalan. - Tidak memformat kode. Jalankan
go fmt ./...; format standar adalah bagian dari budaya Go. - Mengabaikan hasil
go testataugo vet. Keduanya menangkap masalah sebelum biner didistribusikan.
Latihan
- Buat module
example.com/profilyang mencetak nama dan pekerjaan Anda. - Tambahkan package
teksdengan fungsi publikJudul(s string) string, lalu panggil darimain. - Jalankan
go fmt ./...,go test ./...,go vet ./..., dango build .. Catat fungsi setiap perintah. - Ubah nama package pada salah satu file menjadi nama berbeda, amati galat kompilasi, lalu perbaiki.
- Gunakan
go doc strings.ToUpperuntuk membaca kontrak fungsi tanpa peramban.
Rangkuman
Go menyediakan toolchain terpadu untuk format, kompilasi, pengujian, dokumentasi, dan dependensi. go.mod menetapkan identitas module; direktori membentuk package; dan package main menghasilkan program. Siklus aman untuk proyek pemula adalah format, test, vet, lalu build.