Materi
Go adalah bahasa yang dikompilasi: kode sumber diterjemahkan dulu menjadi program mesin, baru dijalankan. Perintah go run main.go melakukan keduanya sekaligus lalu membuang hasil kompilasinya, sedangkan go build menyimpan berkas program yang bisa dijalankan berulang kali tanpa kode sumbernya. Karena kompilasi terjadi lebih dulu, banyak kesalahan, seperti tipe yang tidak cocok atau nama yang belum ada, sudah ditolak sebelum satu baris pun berjalan. Proyek Go disimpan dalam modul; go mod init contoh/halo membuat berkas go.mod yang mencatat nama modulnya.
Setiap berkas Go dibuka dengan klausa package. Program yang bisa dijalankan wajib berada di package main dan punya fungsi main tanpa parameter dan tanpa nilai balik. Eksekusi dimulai dari main, dan program selesai begitu main selesai. Di bawah klausa package ada import yang menyebut paket lain yang dipakai, misalnya fmt untuk mencetak.
package main
import "fmt"
func main() {
fmt.Println("Halo, Bandung!") // Halo, Bandung!
fmt.Println("Total:", 3, "barang") // Total: 3 barang
fmt.Print("A", "B", 1, 2, "\n") // AB1 2
}fmt.Println mencetak semua argumennya dengan satu spasi di antaranya lalu menutup dengan baris baru. fmt.Print tidak menambah baris baru, dan hanya menyisipkan spasi di antara dua argumen yang keduanya bukan teks; itu sebabnya 1 dan 2 di atas berjarak, sedangkan A dan B menempel.