Pointers di Dalam Golang

Hi gengz, kali ini kita akan coba coba pointers di dalam golang. Yuk kita coba coba aja

package main

import "fmt"

func main() {
        a := 1
        fmt.Println("Nilai a adalah:")
        fmt.Println(a)
        fmt.Println("Memory Address a adalah:")
        fmt.Println(&a)
}

Bila program diatas di eksekusi, kita akan melihat hasil dibawah

Yuk kita perhatikan baik baik dulu, pada saat baris “fmt.Println(a)” saya mencoba memanggil value dari a, sedangkan baris “fmt.Println(&a)” saya mencoba mengakses memory address variable a yang hasilnya adalah “0x1400001a0b8”

Kita lanjut dulu ya dengan code dibawah ini

package main

import "fmt"

func main() {
        a := 1
        fmt.Println("Nilai a adalah:")
        fmt.Println(a)
        fmt.Println("Memory Address a adalah:")
        fmt.Println(&a)

        b := &a
        fmt.Println("Nilai b adalah:")
        fmt.Println(*b)
        fmt.Println("Memory Address b adalah:")
        fmt.Println(b)
        fmt.Println("Memory Address a adalah:")
        fmt.Println(&a)
}

Jika kita eksekusi code diatas, maka kita akan mendapat hasil dibawah ini

Bisa kita lihat, bila kita mengakses menggunakan pointers, kita akan diarahkan ke memory address yang sama, yaitu “0x1400001a0b8”. Jika diperhatikan, dalam golang ada tanda “&” dan “*”, saat digunakan bisa diperhatikan bahwa tanda “&” berguna untuk men-generate pointers, dan tanda “*” digunakan untuk membaca through/melalui pointers yang sudah di generate.

Nah sekarang kita coba yuk mendefine variable baru tanpa menggunakan pointers seperti code dibawah ini

package main

import "fmt"

func main() {
        a := 1
        fmt.Println("Nilai a adalah:")
        fmt.Println(a)
        fmt.Println("Memory Address a adalah:")
        fmt.Println(&a)

        b := &a
        fmt.Println("Nilai b adalah:")
        fmt.Println(*b)
        fmt.Println("Memory Address b adalah:")
        fmt.Println(b)
        fmt.Println("Memory Address a adalah:")
        fmt.Println(&a)

        c := a
        fmt.Println("Nilai c adalah:")
        fmt.Println(c)
        fmt.Println("Memory Address c adalah:")
        fmt.Println(&c)
        fmt.Println("Memory Address b adalah:")
        fmt.Println(b)
        fmt.Println("Memory Address a adalah:")
        fmt.Println(&a)
}

Saat kita eksekute, maka kita akan mendapatkan hasil dibawah ini

Bisa diperhatikan bahwa di code terakhir ada baris berikut “c := a”, pertanda bahwa kita mendefine variable baru tidak menggunakan pointers. Dan bisa diperhatikan untuk hasilnya, bahwa Memory address untuk variable c adalah “0x14000124020”, berbeda dengan variable a dan b “0x14000124008”.

Kesimpulan yang bisa saya dapat pribadi, yaitu dengan menggunakan pointer kita bisa mengassign variable baru berdasarkan variable lama tanpa harus membuat memory address yang baru, yang menurut saya tentunya itu lebih efficient.

Semoga bermanfaat ya :))

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Situs yang Didukung WordPress.com.

Atas ↑

%d blogger menyukai ini: