Pointer Dasar di Go
Penjelasan
Go punya pointer (variabel yang menyimpan alamat memori variabel lain), dengan operator yang sama seperti C: & (address-of, mengambil alamat) dan * (dereference, mengakses nilai lewat alamat itu). Bedanya dari C, Go TIDAK mengizinkan pointer arithmetic (mis. ptr + 1 untuk geser posisi) — pointer Go sengaja dibuat lebih sederhana dan aman, cuma dipakai untuk berbagi/mengubah nilai, bukan navigasi memori manual.
Contoh Konsep
package main
import "fmt"
func naikkanUmur(umur *int) {
*umur = *umur + 1 // ubah nilai lewat pointer
}
func main() {
umur := 20
naikkanUmur(&umur) // kirim alamat umur
fmt.Println(umur) // 21, ikut berubah
}
Praktikum
Buat fungsi tambahBonus(saldo *int, bonus int) yang menambahkan bonus ke saldo lewat pointer (bukan return value). Panggil fungsi itu dari main() dengan saldo awal 100000 dan bonus 25000, lalu tampilkan saldo setelah dipanggil.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Fungsi di Go secara default melewatkan argumen dengan disalin (pass by value) — kalau fungsimu perlu MENGUBAH variabel asli si pemanggil, kirim pointer-nya (&variabel), bukan nilainya langsung. Pola ini juga yang dipakai method dengan pointer receiver.