Pointer adalah variabel yang menyimpan alamat memori dari variabel lain, bukan nilainya.
Why use Pointers?
1. Efisiensi: Jika kita mengirim data besar (misal Struct dengan 100 field) ke sebuah fungsi, tanpa pointer data itu akan di-copy (duplikasi). Dengan pointer, kita hanya mengirim "alamat"-nya saja (kecil dan ringan).
2. Modifikasi: Mengizinkan fungsi untuk mengubah nilai asli dari variabel yang berada di luar fungsi tersebut.
Symbols
& (Ampersand): Mengambil alamat memori variabel ("Dimana kamu tinggal?").* (Asterisk): Mengambil nilai di alamat tersebut ("Siapa yang tinggal di alamat ini?").MAIN.GO
package mainimport "fmt"// Fungsi ini menerima POINTER ke int (*int)func ubahNilai(ptr *int) { *ptr = 0 // Mengubah nilai di alamat memori tersebut}func main() { i := 100 fmt.Println("Awal:", i) // Kita kirim ALAMAT memori i (&i) ubahNilai(&i) // Nilai i berubah karena kita memanipulasi alamat aslinya fmt.Println("Akhir:", i)}