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