Menulis program belum terasa hidup sebelum kode benar-benar berjalan. Go menyediakan go run sebagai cara tercepat menjalankan program tanpa repot mengurus file hasil kompilasi. Perintah ini menyembunyikan seluruh tahapan build di balik layar sehingga siklus sunting-lihat-hasil terasa mulus. Pada chapter ini kita jalankan program sapa.go, bedah apa yang sebenarnya dilakukan go run dari kompilasi sampai build cache, lalu kenali exit code yang dilaporkan terminal.

Menjalankan Program dengan go run #

Berkas sapa.go pada folder chapter ini berisi program sapaan minimal:

go
package main

import "fmt"

func main() {
	fmt.Println("Halo! Saya dijalankan lewat go run")
}

Jalankan program tersebut dari direktori chapter dengan perintah berikut:

bash
go run sapa.go

Output yang Dihasilkan:

text
Halo! Saya dijalankan lewat go run

Mari kita telaah baris demi baris program di atas:

  1. Baris 1 (package main): menandai program yang dapat dieksekusi, target yang dicari go run.
  2. Baris 3 (import "fmt"): memuat package fmt yang menyediakan fungsi pencetakan.
  3. Baris 5 (func main() {): titik masuk program; baris inilah yang pertama dieksekusi runtime.
  4. Baris 6 (fmt.Println(...)): statement satu-satunya program, mencetak sapaan ke layar.

Apa yang Terjadi di Balik Layar #

go run bukan interpreter yang membaca kode baris demi baris. Perintah ini menjalankan kompilasi penuh terlebih dulu: parsing berkas, pemeriksaan tipe, pembangkitan kode, dan penggabungan menjadi satu binary. Binary hasil kompilasi tersebut disimpan di build cache, bukan di folder kerja kita, lalu langsung dieksekusi. Karena binary tersimpan di cache, go run kedua kali untuk berkas yang sama terasa jauh lebih cepat karena tahapan build dapat digunakan ulang.

Kita bisa membuktikan tidak adanya binary yang tertinggal di folder kerja:

bash
go run .
ls

Output yang Dihasilkan:

text
Halo! Saya dijalankan lewat go run
index.md
sapa.go

Daftar isi folder setelah go run tetap sama: hanya berkas materi index.md dan sapa.go. Tidak ada file binary baru karena hasil kompilasi bersembunyi di build cache yang lokasinya dikendalikan variabel GOCACHE. Perilaku inilah yang membuat go run cocok untuk kegiatan sehari-hari: folder kerja tetap bersih dari file hasil build.

Opsi go run untuk Package #

Bentuk go run sapa.go menyebut berkas satu per satu, dan pendekatan itu rawan salah ketika program terdiri dari beberapa berkas. Bentuk yang lebih tangguh adalah go run . yang menjalankan seluruh package di direktori aktif:

bash
go run .

Output yang Dihasilkan:

text
Halo! Saya dijalankan lewat go run

Membaca Exit Code #

Setiap program yang selesai menyampaikan satu angka status kepada sistem operasi, yang disebut exit code. Nilai 0 berarti sukses, sedangkan nilai selain 0 menandakan kegagalan. Shell menyimpan status perintah terakhir pada variabel $? yang bisa kita lihat dengan echo $?:

bash
go run sapa.go
echo $?

Output yang Dihasilkan:

text
Halo! Saya dijalankan lewat go run
0

Exit code bukan hiasan; script shell dan pipeline CI memakainya untuk memutuskan langkah berikutnya. Ketika kompilasi gagal, go run berhenti dengan exit code 1 — kita akan melihatnya nyata di chapter Membaca Pesan Error . Program kita sendiri dapat menentukan exit code khusus lewat fungsi os.Exit dari package os, materi yang dibahas di section Command Line Application .

Bagaimana memilih antara go run dan go build? Gunakan go run selama masa pengembangan demi iterasi yang cepat, dan gunakan go build ketika hasil eksekusi perlu disimpan, dibagikan, atau dijalankan berulang kali tanpa kompilasi ulang. go run juga bukan alat produksi: setiap kali program dinyalakan, tahapan build dan pemeriksaan cache tetap berlangsung lebih dulu, sesuatu yang tidak kita inginkan di server yang sibuk.

Siklus cepat dengan go run memang nyaman untuk belajar dan mengembangkan. Namun saat tiba saatnya membagikan program ke pengguna lain, kita butuh satu file yang dapat dijalankan tanpa perintah go sama sekali. Kebutuhan itu dijawab oleh go build pada chapter berikutnya.

Referensi #

Berkas Sumber

Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.

sapa.go

Unduh berkas
go
package main

import "fmt"

func main() {
	fmt.Println("Halo! Saya dijalankan lewat go run")
}