Keyword adalah kata yang dicadangkan oleh spesifikasi bahasa Go sehingga tidak boleh dipakai sebagai nama variabel, fungsi, parameter, atau tipe. Bahasa Go hanya mendefinisikan tepat 25 keyword — jumlah yang sengaja dijauhkan tetap kecil agar bahasa mudah dihafal dan dipindai. Seluruh daftar resminya tercantum pada bagian Keywords di spesifikasi bahasa. Chapter ini menyusun 25 keyword tersebut ke dalam satu tabel rujukan yang dikelompokkan per kategori, lengkap dengan kegunaan dan contoh mini pemakaiannya.

Tabel 25 Keyword #

Tabel berikut memuat seluruh keyword Go dalam urutan alfabetis. Gunakan kolom Kategori untuk mencari kata berdasar kelompoknya, misalnya ketika kita hanya ingat bentuk pernyataan tetapi lupa nama keywordnya. Setiap contoh mini adalah potongan sintaks yang valid jika ditempatkan di posisi yang tepat.

KeywordKategoriKegunaanContoh
breakKendali alurMenghentikan perulangan for, switch, atau select terdalambreak
caseKendali alurLabel cabang pada switch dan selectcase 2:
chanTipe kompositMendeklarasikan channel untuk komunikasi antar goroutinech := make(chan int)
constDeklarasiMendeklarasikan konstanta bernilai tetapconst Pi = 3.14
continueKendali alurMelompati sisa isi iterasi dan lanjut ke iterasi berikutnyacontinue
defaultKendali alurCabang fallback ketika tidak ada case yang cocokdefault:
deferPenundaanMenjadwalkan pemanggilan fungsi saat fungsi sekarang selesaidefer f.Close()
elseKendali alurCabang alternatif dari ifelse { ... }
fallthroughKendali alurMelanjutkan eksekusi ke case berikutnya pada switchfallthrough
forKendali alurSatu-satunya konstruksi perulangan di Gofor i := range 10 {
funcDeklarasiMendeklarasikan fungsi atau methodfunc main() {}
goConcurrencyMenjalankan pemanggilan fungsi sebagai goroutine barugo kerjakan()
gotoKendali alurLompat tanpa syarat ke label dalam fungsi yang samagoto selesai
ifKendali alurPercabangan bersyaratif x > 0 {
importDeklarasiMemuat package agar identitasnya bisa dipakaiimport "fmt"
interfaceTipe kompositMendeklarasikan sekumpulan method sebagai tipetype Reader interface {
mapTipe kompositMendeklarasikan tabel hash kunci-nilaimap[string]int
packageDeklarasiMenentukan nama package dari sebuah berkaspackage main
rangeKendali alurMengiterasi elemen slice, map, channel, string, atau integerfor k, v := range m
returnKendali alurMengakhiri fungsi dan mengembalikan nilaireturn hasil
selectConcurrencyMenunggu salah satu operasi channel siap dijalankanselect {
structTipe kompositMendeklarasikan tipe gabungan berisi fieldtype User struct {
switchKendali alurPercabangan multi-cabangswitch x {
typeDeklarasiMendeklarasikan tipe baru, alias, atau interfacetype ID int
varDeklarasiMendeklarasikan variabelvar nama string

Perhatikan pembagian perannya: keyword for mencakup semua bentuk perulangan, dan if bersama switch menangani seluruh percabangan. Go tidak memiliki keyword while, do, atau class sebagaimana bahasa lain; peran tersebut diambil alih oleh kombinasi 25 kata di atas.

Identifier Terpasang yang Bukan Keyword #

Banyak kata yang terlihat seperti keyword padahal statusnya hanya predeclared identifier — nama yang sudah tersedia di setiap berkas, tetapi tetap boleh dibayangi (shadowing) oleh deklarasi kita. Kata int, len, true, dan nil masuk kelompok ini, bukan keyword. Tabel berikut merangkum identifier terpasang yang paling sering dikira keyword:

IdentifierKategoriKegunaan
anyTipe terpasangAlias resmi untuk interface{} sejak Go 1.18
comparableTipe terpasangConstraint untuk tipe yang dapat dibandingkan dengan ==
errorTipe terpasangInterface standar untuk nilai error dengan method Error() string
byteAlias tipeAlias untuk uint8
runeAlias tipeAlias untuk int32, mewakili satu titik kode Unicode
nilNilai terpasangNilai nol untuk pointer, slice, map, channel, func, dan interface
true, falseKonstanta booleanDua nilai yang mungkin dimiliki tipe bool
iotaKonstanta terpasangPenghitung otomatis di dalam blok deklarasi const

Identifier len, cap, append, dan kawan-kawannya juga masuk kelompok ini sebagai fungsi bawaan; seluruh daftarnya dibahas pada chapter Built-in Function . Karena bukan keyword, identifier terpasang secara teknis bisa dibayangi — misalnya mendeklarasikan variabel bernama error — tetapi praktik tersebut membingungkan pembaca kode dan sebaiknya dihindari.

Memverifikasi Daftar secara Programatik #

Daftar 25 keyword pada tabel di atas bukan sekadar salinan hafalan. Standard library menyediakan package go/token yang memetakan identifier menjadi token bahasa; fungsi token.Lookup mengembalikan token keyword untuk 25 kata resmi dan token.IDENT untuk kata lainnya. Berkas keyword-demo.go pada bagian bawah halaman memakai fungsi tersebut untuk memverifikasi kedua klaim sekaligus:

go
package main

import (
	"fmt"
	"go/token"
)

// kandidatKeyword berisi 25 keyword resmi dari spesifikasi bahasa Go.
var kandidatKeyword = []string{
	"break", "case", "chan", "const", "continue", "default", "defer",
	"else", "fallthrough", "for", "func", "go", "goto", "if", "import",
	"interface", "map", "package", "range", "return", "select",
	"struct", "switch", "type", "var",
}

// kandidatPredeclared berisi identifier terpasang yang sering dikira keyword.
var kandidatPredeclared = []string{
	"any", "comparable", "error", "byte", "rune",
	"nil", "true", "false", "iota",
}

func main() {
	keyword := 0
	for _, kata := range kandidatKeyword {
		if token.Lookup(kata) != token.IDENT {
			keyword++
		}
	}
	fmt.Printf("keyword resmi terverifikasi: %d dari %d kandidat\n", keyword, len(kandidatKeyword))

	bukanKeyword := 0
	for _, kata := range kandidatPredeclared {
		if token.Lookup(kata) == token.IDENT {
			bukanKeyword++
		}
	}
	fmt.Printf("predeclared identifier yang bukan keyword: %d dari %d\n", bukanKeyword, len(kandidatPredeclared))
}

Output yang Dihasilkan:

text
keyword resmi terverifikasi: 25 dari 25 kandidat
predeclared identifier yang bukan keyword: 9 dari 9

Mari kita telaah bagian-bagian penting program di atas:

  1. Baris 3-6 (import): program mengimpor fmt untuk mencetak hasil dan go/token untuk mengakses tabel token bahasa Go.
  2. Baris 9-14 (kandidatKeyword): slice berisi 25 kandidat keyword persis seperti tabel di awal chapter.
  3. Baris 17-20 (kandidatPredeclared): sembilan identifier terpasang yang sering dikira keyword.
  4. Baris 24-28 (loop pertama): untuk setiap kandidat, token.Lookup mengembalikan token selain token.IDENT apabila kata tersebut memang keyword resmi.
  5. Baris 29: mencetak jumlah kandidat yang lolos verifikasi — hasilnya 25 dari 25.
  6. Baris 32-37 (loop kedua): pemeriksaan kebalikan — kesembilan identifier terpasang mengembalikan token.IDENT, artinya semuanya terbukti bukan keyword.

Referensi #

Dengan tabel keyword ini di tangan, saatnya kita melihat kumpulan kata lain yang menentukan bentuk data program: tipe-tipe bawaan beserta zero value dan rentang nilainya dibahas pada chapter Tipe Data .

Berkas Sumber

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

keyword-demo.go

Unduh berkas
go
package main

import (
	"fmt"
	"go/token"
)

// kandidatKeyword berisi 25 keyword resmi dari spesifikasi bahasa Go.
var kandidatKeyword = []string{
	"break", "case", "chan", "const", "continue", "default", "defer",
	"else", "fallthrough", "for", "func", "go", "goto", "if", "import",
	"interface", "map", "package", "range", "return", "select",
	"struct", "switch", "type", "var",
}

// kandidatPredeclared berisi identifier terpasang yang sering dikira keyword.
var kandidatPredeclared = []string{
	"any", "comparable", "error", "byte", "rune",
	"nil", "true", "false", "iota",
}

func main() {
	keyword := 0
	for _, kata := range kandidatKeyword {
		if token.Lookup(kata) != token.IDENT {
			keyword++
		}
	}
	fmt.Printf("keyword resmi terverifikasi: %d dari %d kandidat\n", keyword, len(kandidatKeyword))

	bukanKeyword := 0
	for _, kata := range kandidatPredeclared {
		if token.Lookup(kata) == token.IDENT {
			bukanKeyword++
		}
	}
	fmt.Printf("predeclared identifier yang bukan keyword: %d dari %d\n", bukanKeyword, len(kandidatPredeclared))
}