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:
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 valueBentuk 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:
go run variabel.gopackage 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:
Aplikasi: Kasir Mini
Nama: Budi
Umur: 25
Kota: Bandung
Umur tahun depan: 26Mari kita telaah baris demi baris program di atas:
- Baris 6 (
var namaAplikasi string = "Kasir Mini"): mendeklarasikan variabel level package bernamanamaAplikasibertipestringdengan nilai awal"Kasir Mini". - Baris 9 (
var nama string = "Budi"): mendeklarasikan variabel lokalnamadengan tipe dan nilai yang ditulis eksplisit. - Baris 10 (
var umur int): mendeklarasikan variabelumurtanpa nilai awal, sehingga berisi zero value0untuk sementara. - Baris 12 (
umur = 25): menimpa nilaiumurdengan25menggunakan operator penugasan. - Baris 13 (
var kota = "Bandung"): mendeklarasikankotatanpa tipe; compiler menyimpulkan tipestringdari nilainya. - Baris 20 (
umur = umur + 1): membaca nilaiumursaat ini, menambahkannya dengan1, lalu menyimpan hasilnya kembali keumur.
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:
| Aturan | Contoh sah | Contoh tidak sah |
|---|---|---|
Hanya huruf, digit, dan garis bawah _ | total_harga, nilai2 | total-harga (tanda minus) |
| Tidak boleh diawali digit | skor1 | 1skor |
| Tidak boleh memakai kata kunci Go | namaFunc | func, 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 #
- Spesifikasi Go: Variables — definisi resmi deklarasi variabel dan zero value.
- A Tour of Go: Basics — latihan interaktif deklarasi variabel.
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
variabel.go
Unduh berkaspackage 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)
}