Sunday, December 9, 2018

Pointer Golang

pointer golang

Pointer Golang

Pointer pada Pemrograman GO digunakan ketika kita memanggil fungsi dan digunakan untuk mengambil nilai atau argumen, argumen itu kemudian disalin ke fungsi, untuk contoh silakan ikuti coding berikut :
package main
import (
"fmt"
)
func zero(x int) { 
x = 0 } 
func main() {
x := 5 
zero(x) 
fmt.Println(x) // x akan tetap 5 
}

pointer golang
hasil coding



Dalam program diatas fungsi zero tidak akan mengubah variabel x asli di fungsi utama. Tetapi bagaimana jika kita menginginkannya untuk merubah nilai tersebut? Salah satu cara untuk melakukannya adalah dengan menggunakan tipe data khusus yang dikenal sebagai pointer pada coding menjadi 'Ptr', seperti coding berikut ini :

package main
import (
"fmt"
)
func zero(xPtr *int) { 
*xPtr = 0 

func main() { 
x := 5 
zero(&x) 
fmt.Println(x) // x menjadi 0 
}

pointer golang
hasil coding


Pointer akan mengambil nilai pada lokasi memori tempat nilai disimpan, dan mengecualikan tempat nilai itu sendiri.  Dengan menggunakan pointer (* int) fungsi zero dapat memodifikasi variabel asli dari nilai 5 menjadi 0.

Operator * dan &

Dalam Go, pointer diwakili dengan menggunakan karakter * (tanda bintang) diikuti oleh type nilai yang disimpan. Dalam fungsi nol xPtr adalah pointer ke int.

* Juga digunakan untuk variabel penunjuk “dereference”. Dereferencingkan pointer memberi kita akses ke nilai yang ditunjukkan oleh pointer. Ketika kita menulis * xPtr = 0 kita seperti memperintahkan "simpan int 0 di lokasi memori xPtr". Jika kita hanya menulis xPtr = 0 sebagai gantinya kita akan mendapatkan kesalahan kompilator karena xPtr tidak akan dianggap sebagai integer.

Kita menggunakan operator & untuk mencari alamat variabel. &x mengembalikan * int (pointer ke int) karena x adalah int. Ini membuat kita memungkinkan untuk memodifikasi variabel asli. &x di fungsi main dan xPtr di nol merujuk ke lokasi memori yang sama.

New

Cara lain untuk mendapatkan pointer adalah dengan menggunakan fungsi New bawaan, seperti coding berikut :

package main
import (
"fmt"
)
func one(xPtr *int) { 
*xPtr = 1 } 
func main() { 
xPtr := new(int) 
one(xPtr) 
fmt.Println(*xPtr) // x adalah 1 
}

pointer golang
hasil coding


New mengambil tipe sebagai argumen, mengalokasikan cukup memori agar sesuai dengan type pada nilai itu dan mengembalikan pointer.

Dalam beberapa bahasa pemrograman ada perbedaan yang signifikan antara penggunaan New dan &.

Pointer jarang digunakan dengan tipe bawaan pada pemrograman Go, tetapi yang akan kita lihat di materi selanjutnya, Pointer sangat berguna ketika dipasangkan dengan struct.



MATERI GOLANG

Jika kamu baru di pembelajaran golang, silakan untuk belajar dari materi pertama 


Reviewer: FajarYusuf.Com
ItemReviewed: Pointer Golang

Seseorang yang ingin membagi pengalaman dan ilmu yang berguna untuk para pembaca FajarYusuf.Com :)

TENTANG SITUS

SITUS INI ADALAH SITUS PEMBELAJARAN PEMROGRAMAN DAN JUGA PEMAHAMAN TERHADAP TEKNOLOGI KOMPUTER. KALIAN BISA MENGIKUTI PEMBELAJARAN PEMROGRAMAN DENGAN BERTAHAP PADA MATERI YANG SUDAH SAYA SEDIAKAN, JIKA ADA MATERI YANG MEMBINGUNGKAN SILAKAN LAKUKAN KOMENTAR PADA MATERI YANG ANDA TANYAKAN ATAU KALIAN BISA MENGHUBUNGI SAYA DIHALAMAN KONTAK.