Variable adalah salah satu konsep fundamental dalam programming. Di Go, variable digunakan untuk menyimpan data yang dapat berubah selama program berjalan. Bab ini akan membahas berbagai cara mendeklarasikan dan menggunakan variable di Go.
Apa itu Variable?
Variable adalah lokasi penyimpanan di memori yang memiliki nama dan dapat menyimpan nilai. Nilai ini dapat berubah selama program berjalan, berbeda dengan constant yang nilainya tetap.
Di Go, variable harus dideklarasikan sebelum digunakan dan memiliki type yang spesifik.
Mendeklarasikan Variable dengan var
Cara paling dasar untuk mendeklarasikan variable di Go adalah menggunakan keyword var
:
package main
import "fmt"
func main() {
var nama string
fmt.Println(nama) // Output: "" (string kosong)
}
Deklarasi dengan Inisialisasi
Kita dapat memberikan nilai awal saat mendeklarasikan variable:
package main
import "fmt"
func main() {
var nama string = "Budi"
var umur int = 25
fmt.Println(nama) // Output: Budi
fmt.Println(umur) // Output: 25
}
Type Inference
Go dapat menebak type variable berdasarkan nilai yang diberikan:
package main
import "fmt"
func main() {
var nama = "Siti" // Go tahu ini string
var umur = 30 // Go tahu ini int
var tinggi = 165.5 // Go tahu ini float64
var menikah = true // Go tahu ini bool
fmt.Println(nama, umur, tinggi, menikah)
}
Multiple Variable Declaration
Kita dapat mendeklarasikan beberapa variable sekaligus:
package main
import "fmt"
func main() {
// Deklarasi multiple variable dengan type yang sama
var a, b, c int = 1, 2, 3
// Deklarasi multiple variable dengan type berbeda
var nama, umur, tinggi = "Ali", 28, 170.0
fmt.Println(a, b, c)
fmt.Println(nama, umur, tinggi)
}
Grouped Variable Declaration
Untuk kode yang lebih rapi, kita dapat mengelompokkan deklarasi variable:
package main
import "fmt"
func main() {
var (
nama string = "Ahmad"
umur int = 35
tinggi float64 = 175.5
menikah bool = true
)
fmt.Println(nama, umur, tinggi, menikah)
}
Short Variable Declaration (:=
)
Di dalam function, kita dapat menggunakan shorthand :=
untuk mendeklarasikan dan menginisialisasi variable:
package main
import "fmt"
func main() {
nama := "Dewi"
umur := 27
tinggi := 160.0
fmt.Println(nama, umur, tinggi)
}
Catatan penting: Syntax :=
hanya bisa digunakan di dalam function, tidak bisa di package level.
Zero Values
Ketika variable dideklarasikan tanpa nilai awal, Go memberikan zero value berdasarkan type-nya:
package main
import "fmt"
func main() {
var (
number int // 0
text string // ""
flag bool // false
pointer *int // nil
)
fmt.Printf("int: %d\n", number)
fmt.Printf("string: '%s'\n", text)
fmt.Printf("bool: %t\n", flag)
fmt.Printf("pointer: %v\n", pointer)
}
Daftar Zero Values
- Numeric types (
int
,float64
, dll):0
- String:
""
(empty string) - Boolean:
false
- Pointers, slices, maps, channels:
nil
Variable Redeclaration dengan :=
Dengan :=
, kita dapat redeclare variable jika minimal ada satu variable baru:
package main
import "fmt"
func main() {
nama := "Andi"
fmt.Println(nama) // Output: Andi
// Redeclaration dengan variable baru
nama, umur := "Budi", 25
fmt.Println(nama, umur) // Output: Budi 25
}
Variable Scope
Variable memiliki scope (ruang lingkup) berdasarkan di mana mereka dideklarasikan:
Package Level Variable
package main
import "fmt"
// Package level variable
var globalVar = "Saya bisa diakses di mana saja dalam package"
func main() {
fmt.Println(globalVar)
contohFunction()
}
func contohFunction() {
fmt.Println(globalVar) // Bisa mengakses variable global
}
Function Level Variable
package main
import "fmt"
func main() {
// Function level variable
localVar := "Saya hanya bisa diakses dalam function ini"
fmt.Println(localVar)
if true {
// Block level variable
blockVar := "Saya hanya bisa diakses dalam block ini"
fmt.Println(localVar) // Bisa akses function variable
fmt.Println(blockVar) // Bisa akses block variable
}
// fmt.Println(blockVar) // ERROR! blockVar tidak bisa diakses di sini
}
Assignment dan Reassignment
Setelah variable dideklarasikan, kita dapat mengubah nilainya:
package main
import "fmt"
func main() {
var nama string = "Awal"
fmt.Println(nama) // Output: Awal
nama = "Berubah"
fmt.Println(nama) // Output: Berubah
// Multiple assignment
var a, b int = 1, 2
a, b = b, a // Tukar nilai
fmt.Println(a, b) // Output: 2 1
}
Blank Identifier (_
)
Blank identifier digunakan untuk mengabaikan nilai yang tidak diperlukan:
package main
import "fmt"
func getData() (string, int) {
return "Nama", 25
}
func main() {
// Hanya ambil nama, abaikan umur
nama, _ := getData()
fmt.Println(nama)
// Hanya ambil umur, abaikan nama
_, umur := getData()
fmt.Println(umur)
}
Variable dengan Pointer
Variable dapat menyimpan alamat memori dari variable lain menggunakan pointer:
package main
import "fmt"
func main() {
var angka int = 42
var pointer *int = &angka
fmt.Println("Nilai angka:", angka) // Output: 42
fmt.Println("Alamat angka:", &angka) // Output: alamat memori
fmt.Println("Nilai pointer:", pointer) // Output: alamat memori yang sama
fmt.Println("Nilai yang ditunjuk:", *pointer) // Output: 42
}
Best Practices
1. Gunakan Nama Variable yang Deskriptif
// Kurang baik
var n string
var a int
// Lebih baik
var namaUser string
var umurUser int
2. Gunakan :=
untuk Local Variable
func main() {
// Lebih singkat dan jelas
nama := "Budi"
umur := 25
// Daripada
var nama string = "Budi"
var umur int = 25
}
3. Group Related Variables
var (
serverHost = "localhost"
serverPort = 8080
serverSSL = false
)
4. Inisialisasi Variable Dekat dengan Penggunaan
func prosesData() {
// Tidak perlu deklarasi di awal jika tidak langsung digunakan
// ... kode lain ...
// Deklarasi ketika dibutuhkan
hasil := hitungSesuatu()
fmt.Println(hasil)
}
Latihan
Latihan 1: Deklarasi Basic
Buat program yang mendeklarasikan variable untuk data personal:
package main
import "fmt"
func main() {
// TODO: Deklarasikan variable berikut:
// - nama (string): "Andi Pratama"
// - umur (int): 28
// - gaji (float64): 5500000.50
// - sudahMenikah (bool): true
// Tampilkan semua variable
}
Latihan 2: Multiple Assignment
package main
import "fmt"
func main() {
// TODO: Gunakan multiple assignment untuk:
a, b := 10, 20
// 1. Tukar nilai a dan b
// 2. Tampilkan hasilnya
}
Latihan 3: Zero Values
package main
import "fmt"
func main() {
// TODO: Deklarasikan variable tanpa nilai awal dan tampilkan zero value untuk:
// - int, string, bool, float64
}
Kesimpulan
Variable adalah fondasi dalam programming Go. Poin-poin penting yang harus diingat:
- Gunakan
var
untuk deklarasi eksplisit - Gunakan
:=
untuk shorthand di dalam function - Go memiliki type inference yang membantu
- Setiap type memiliki zero value
- Variable memiliki scope berdasarkan lokasi deklarasi
- Gunakan blank identifier
_
untuk mengabaikan nilai
Dengan memahami variable dengan baik, kita dapat menulis kode Go yang efisien dan mudah dibaca. Di bab selanjutnya, kita akan belajar tentang berbagai data type yang tersedia di Go.