Inilah programnya secara lengkap. Tekan Jalankan.
Tidak ada satu pun baris ini yang opsional. Bagian lain halaman ini menjelaskan fungsi masing-masing baris.
Baris demi Baris
package main
Setiap file Go diawali klausa package yang menyebut package tempat file itu berada. Nama main itu istimewa: nama ini menandai package sebagai program yang bisa dieksekusi. Nama lain apa pun (package utils, package hello) membuat library yang bisa di-import oleh kode lain, tetapi tidak bisa berjalan sendiri.
import "fmt"
import memasukkan package lain supaya kamu bisa memakainya. fmt adalah package standard library untuk memformat dan mencetak. Setelah di-import, nama-nama yang diekspornya diakses lewat nama package: fmt.Println, fmt.Printf, fmt.Sprintf.
Untuk meng-import beberapa package, pakai blok dalam tanda kurung dengan satu path per baris:
import (
"fmt"
"strings"
)
Go menolak meng-compile file yang meng-import package yang tidak dipakainya. Aturan ini menjaga daftar dependensi tetap jujur, dan inilah error pertama yang ditemui kebanyakan orang.
func main()
func mendeklarasikan sebuah fungsi. main di package main adalah titik masuk program: program dimulai saat main dimulai dan berakhir saat main selesai. Fungsi ini tidak menerima argumen dan tidak mengembalikan apa pun. Argumen command line berasal dari os.Args, dan exit code dari os.Exit.
fmt.Println("Hello, World!")
Println mencetak argumennya, menaruh spasi di antaranya, dan menambahkan baris baru. Namanya diawali huruf kapital karena hanya nama berhuruf kapital yang diekspor dari sebuah package. fmt.println dengan p huruf kecil adalah error kompilasi.
Mencetak Lebih dari Sebuah String
Println menerima berapa pun nilai dengan tipe apa pun. Printf memberimu kendali atas formatnya:
%s diganti dengan string dan %d dengan integer. Printf dan Print tidak menambahkan baris baru, jadi kamu sendiri yang menulis \n. Tabel verb lengkapnya ada di halaman fmt.Printf.
Jalankan di Komputermu
Setelah Go terinstal, simpan program itu sebagai main.go di folder kosong dan jalankan:
go run main.go
Hello, World!
go run meng-compile file itu menjadi binary sementara lalu menjalankannya. Untuk menghasilkan binary yang bisa kamu simpan dan salin ke tempat lain, pakai go build:
go mod init example.com/hello
go build
./hello
Hello, World!
go build butuh sebuah modul (file go.mod), yang dibuat oleh go mod init. Binary-nya dinamai sesuai bagian terakhir dari module path, di sini hello (hello.exe di Windows). Perbedaan antara run, build, dan install dibahas di halaman go run dan go build.
Ke Mana Perginya Titik Koma
Tata bahasa Go memakai titik koma, tetapi kamu hampir tidak pernah mengetiknya. Compiler menyisipkan titik koma di akhir setiap baris yang token terakhirnya bisa mengakhiri sebuah pernyataan: identifier, literal, ), }, dan beberapa kata kunci seperti return. Aturan itulah yang membuat gaya umum dari bahasa lain ini gagal:
func main()
{
fmt.Println("Hello, World!")
}
./main.go:6:1: syntax error: unexpected semicolon or newline before {
Titik koma disisipkan setelah func main(), jadi { di baris berikutnya menjadi error. Kurung kurawal pembuka selalu ditulis di baris yang sama. Aturan yang sama berlaku untuk if, for, switch, dan setiap blok lainnya.
Error Pertama, Dijelaskan
Inilah pesan-pesan yang dilihat pemula di jam pertama mereka, persis seperti yang dicetak Go 1.24.
Import atau variabel yang tidak dipakai.
package main
import (
"fmt"
"os"
)
func main() {
x := 5
fmt.Println("hi")
}
./main.go:5:2: "os" imported and not used
./main.go:9:2: declared and not used: x
Keduanya adalah error kompilasi, bukan peringatan. Hapus import atau variabelnya. Kalau kamu perlu mempertahankan sebuah variabel selama debugging, assign ke blank identifier: _ = x.
Nama fungsi dengan huruf kecil.
./main.go:6:6: undefined: fmt.println
Nama yang tidak diekspor tidak terlihat di luar package-nya. Pakai fmt.Println.
Nama package yang salah.
package example.com/hello is not a main package
File itu menulis package hello (atau apa pun selain main) dan kamu mencoba menjalankannya. Ubah menjadi package main.
Modul tidak ada.
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
go build dan go run . bekerja pada modul. Jalankan go mod init example.com/hello sekali di folder itu. go run main.go, yang menyebut nama file, bisa berjalan tanpa modul.
Format Kode
Go punya satu gaya kode resmi, dan gofmt yang menerapkannya. Jalankan pada setiap file yang kamu tulis:
go fmt ./...
Tool ini memakai tab untuk indentasi, meratakan komentar dan field struct, dan menormalkan spasi. Editor yang mendukung Go menjalankannya saat file disimpan. Kode Go di mana pun terlihat sama, jadi tidak ada yang perlu dikonfigurasi dan tidak ada yang perlu diperdebatkan saat code review.
Pertanyaan yang sering diajukan
Bagaimana cara menulis hello world di Go?
Simpan kode ini sebagai main.go:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Lalu jalankan go run main.go. Program ini mencetak Hello, World!.
Kenapa program Go butuh package main?
package main memberi tahu compiler bahwa package ini adalah program yang bisa dieksekusi, bukan library. Program dimulai dari fungsi main di package main. Nama package lain apa pun menghasilkan library, dan go run menolaknya dengan pesan "is not a main package".
Kenapa kurung kurawal pembuka di Go harus di baris yang sama?
Go menyisipkan titik koma secara otomatis di akhir baris yang bisa mengakhiri sebuah pernyataan, termasuk setelah func main(). { di baris berikutnya lalu akan memulai blok yang terpisah, jadi compiler melaporkan syntax error: unexpected semicolon or newline before {. Kurung kurawal itu harus ada di baris yang sama.
Apa arti fmt di Go?
fmt adalah package standard library untuk input dan output yang diformat (namanya singkatan dari "format"). fmt.Println mencetak argumennya dengan spasi di antaranya dan baris baru di akhir; fmt.Printf mencetak dengan memakai string format.