Setiap program perlu mengingat sesuatu selama program berjalan: nama pengguna yang sedang login, jumlah barang di keranjang, atau skor permainan terakhir. Variabel adalah mekanisme Go untuk menyimpan nilai tersebut di memori di bawah satu nama yang dapat dipanggil kembali. Berbeda dengan banyak bahasa lain, Go mengharuskan setiap variabel memiliki satu tipe yang tetap sejak dideklarasikan, sehingga compiler dapat memeriksa kesalahan tipe sebelum program dijalankan. Pada chapter ini kita akan mendeklarasikan variabel dengan kata kunci var, mengisi dan membaca kembali nilainya, lalu mempelajari aturan penamaan yang sah.

Peran Variabel dalam Program #

Deklarasi variabel meminta compiler menyiapkan sebuah lokasi memori, memberi lokasi tersebut sebuah nama (identifier), dan mencatat tipe data apa saja yang boleh disimpan di dalamnya. Setelah variabel dideklarasikan, kita dapat menulis nilai ke variabel tersebut dengan operator penugasan =, dan membaca nilainya kembali kapan pun selama variabel masih berada dalam jangkauan (scope). Compiler Go akan menolak program yang menulis nilai bertipe berbeda dari tipe variabel, misalnya memasukkan string ke variabel bertipe int.

Tiga Bentuk Deklarasi var #

Kata kunci var memiliki tiga bentuk pemakaian yang paling sering kita jumpai:

go
var nama string = "Budi" // tipe dan nilai ditulis eksplisit
var kota = "Bandung"     // tipe disimpulkan dari nilai awal
var umur int             // tanpa nilai awal, berisi zero value

Bentuk pertama menuliskan tipe dan nilai secara lengkap. Bentuk kedua menghilangkan tipe karena compiler menyimpulkan tipe dari nilai yang diberikan; topik ini akan kita bedah tuntas pada chapter Inferensi Tipe . Bentuk ketiga tidak memberi nilai awal, sehingga variabel otomatis berisi zero value tipe tersebut — perilaku yang akan kita bahas pada chapter Zero Value .

Deklarasi dengan var juga sah di luar fungsi, yaitu pada level package. Variabel level package dapat dibaca oleh seluruh fungsi pada file yang sama, seperti variabel namaAplikasi pada program utuh di bawah.

Program Utuh #

Berkas variabel.go menggabungkan ketiga bentuk deklarasi di atas dalam satu program yang dapat dijalankan. Jalankan berkas tersebut dari direktori chapter dengan perintah berikut:

bash
go run variabel.go
go
package main

import "fmt"

// namaAplikasi dapat dibaca dari seluruh fungsi di package ini.
var namaAplikasi string = "Kasir Mini"

func main() {
	var nama string = "Budi"
	var umur int

	umur = 25
	var kota = "Bandung"

	fmt.Println("Aplikasi:", namaAplikasi)
	fmt.Println("Nama:", nama)
	fmt.Println("Umur:", umur)
	fmt.Println("Kota:", kota)

	umur = umur + 1
	fmt.Println("Umur tahun depan:", umur)
}

Output yang Dihasilkan:

text
Aplikasi: Kasir Mini
Nama: Budi
Umur: 25
Kota: Bandung
Umur tahun depan: 26

Mari kita telaah baris demi baris program di atas:

  1. Baris 6 (var namaAplikasi string = "Kasir Mini"): mendeklarasikan variabel level package bernama namaAplikasi bertipe string dengan nilai awal "Kasir Mini".
  2. Baris 9 (var nama string = "Budi"): mendeklarasikan variabel lokal nama dengan tipe dan nilai yang ditulis eksplisit.
  3. Baris 10 (var umur int): mendeklarasikan variabel umur tanpa nilai awal, sehingga berisi zero value 0 untuk sementara.
  4. Baris 12 (umur = 25): menimpa nilai umur dengan 25 menggunakan operator penugasan.
  5. Baris 13 (var kota = "Bandung"): mendeklarasikan kota tanpa tipe; compiler menyimpulkan tipe string dari nilainya.
  6. Baris 20 (umur = umur + 1): membaca nilai umur saat ini, menambahkannya dengan 1, lalu menyimpan hasilnya kembali ke umur.

Membaca dan Memperbarui Nilai #

Baris umur = umur + 1 memperlihatkan pola baca-tulis yang paling umum: Go mengevaluasi sisi kanan operator = terlebih dahulu menjadi satu nilai, kemudian menyimpan nilai tersebut ke variabel di sisi kiri. Nilai variabel boleh berubah berkali-kali, tetapi tipenya tetap sejak dideklarasikan. Penugasan yang melanggar tipe, misalnya umur = "tua" pada variabel bertipe int, ditolak compiler dengan pesan cannot use "tua" (untyped string constant) as int value in assignment.

Aturan Penamaan Variabel #

Nama variabel harus mengikuti aturan identifier Go berikut:

AturanContoh sahContoh tidak sah
Hanya huruf, digit, dan garis bawah _total_harga, nilai2total-harga (tanda minus)
Tidak boleh diawali digitskor11skor
Tidak boleh memakai kata kunci GonamaFuncfunc, var, if
Tidak boleh kembar di scope yang sama—var nama string dua kali dalam satu blok

Nama yang sama di scope berbeda tetap sah dan akan dibahas tuntas pada chapter tentang variable shadowing. Konvensi gaya penamaan — camelCase, PascalCase, dan makna huruf kapital di awal nama — akan kita bahas pada chapter Penamaan Identifier .

Referensi #

Berkas Sumber

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

variabel.go

Unduh berkas
go
package main

import "fmt"

// namaAplikasi dapat dibaca dari seluruh fungsi di package ini.
var namaAplikasi string = "Kasir Mini"

func main() {
	var nama string = "Budi"
	var umur int

	umur = 25
	var kota = "Bandung"

	fmt.Println("Aplikasi:", namaAplikasi)
	fmt.Println("Nama:", nama)
	fmt.Println("Umur:", umur)
	fmt.Println("Kota:", kota)

	umur = umur + 1
	fmt.Println("Umur tahun depan:", umur)
}