Pointers

Duration: 10 min  •  Difficulty: Hard

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 main
    import "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)
    }