Golang Dasar: Dari Nol hingga CLI Production-Ready1/10

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:

Code
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

PerintahKegunaan
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 tidyMenyelaraskan dependensi di go.mod dan go.sum
go doc fmt.PrintlnMembaca dokumentasi simbol

Alur kerja sederhananya:

Memuat diagram…

3. Membuat Module Pertama

Module adalah unit versi dan distribusi yang berisi satu atau lebih package. Buat proyek di direktori kosong:

Code
mkdir halo-go
cd halo-go
go mod init example.com/halo-go

Perintah terakhir membuat go.mod:

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

Code
package main

import "fmt"

func main() {
	fmt.Println("Halo, Go!")
}

Jalankan dan bangun:

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

Code
halo-go/
├── go.mod
├── main.go
└── salam/
    └── salam.go

Isi salam/salam.go:

Code
package salam

func Pesan(nama string) string {
	return "Halo, " + nama + "!"
}

Huruf awal kapital mengekspor Pesan agar dapat dipakai package lain. Ubah main.go:

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

Code
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.go pada proyek multifile. Gunakan go run . agar seluruh package dipertimbangkan.
  • Menaruh beberapa package biasa dalam satu direktori. Pisahkan package ke direktori berbeda.
  • Menganggap GOPATH sebagai lokasi wajib proyek. Module modern dapat berada di direktori mana pun.
  • Path import tidak cocok dengan module di go.mod. Gunakan path module sebagai awalan.
  • Tidak memformat kode. Jalankan go fmt ./...; format standar adalah bagian dari budaya Go.
  • Mengabaikan hasil go test atau go vet. Keduanya menangkap masalah sebelum biner didistribusikan.

Latihan

  1. Buat module example.com/profil yang mencetak nama dan pekerjaan Anda.
  2. Tambahkan package teks dengan fungsi publik Judul(s string) string, lalu panggil dari main.
  3. Jalankan go fmt ./..., go test ./..., go vet ./..., dan go build .. Catat fungsi setiap perintah.
  4. Ubah nama package pada salah satu file menjadi nama berbeda, amati galat kompilasi, lalu perbaiki.
  5. Gunakan go doc strings.ToUpper untuk 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.