Skip to main content

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 

Comments

Popular posts from this blog

Menambahkan Peraturan Komentar Pada Blog

Menambahkan Peraturan Komentar Pada Blog : Ngblog Menulis sebuah artikel dan dikomentari dengan link aktif/promosi produk dan kata kata spam lainnya memang tidak mengenakan anda mungkin akan sangat merasa kecewa sekali, anda mungkin seperti menulis sebuah artikel namun tidak dihargai karyanya oleh orang lain. Mungkin membuat aturan berkomentar di blog adalah salah 1 cara menetralisirnya, mungkin jika ada aturan tersebut orang berpikir 2 kali untuk meninggalkan komentar Spam, lalu bagaimana cara membuat aturan komentar tersebut? langsung saja kita praktekan Ikuti langkah berikut : Login ke bloger,masuk ke blog yang anda inginkan, Klik Setelan -> POS-KOMENTAR   Scroll kebawah dan cari menu "pesan formulir komentar" klik tambahkan , dan isi kolom sesuai keinginan kalian atau peraturan yang kalian inginkan.  Setelah selesai silakan klik simpan setelan dipojok kanan atas. Lihat hasilnya di blog kalian ,akan seperti ini : Jika ada pertanyaan...

Traha Infinity a lancé une campagne événementielle de pré-inscription

Moai Games a officiellement annoncé la sortie d’ un  nouveau  MMORPG  intitulé  Traha Infinity , dans la première moitié de 2022. Ce jeu mobile devrait se dérouler 200 ans avant les événements des précédents jeux  Traha , il a  des  graphismes  Full 3D  et optimisés performances haut de gamme pour smartphones. Traha a  été un énorme succès en Corée avec 4,2 millions de précommandes avant sa sortie officielle en 2019, le jeu mobile n’a jamais eu de sortie mondiale. Ce jeu a été développé par Moai Games et publié par  Nexon , et est devenu l’un des jeux les plus vendus de l’époque. Et maintenant,  Traha Infinity  continuera le même monde comme une suite, plutôt une préquelle. Le nouveau jeu présentera la même vision du monde et la même topographie que le jeu précédent, mais présentera un nouveau scénario. Ils se vantent d’ une qualité graphique  Full 3D haut  de gamme ainsi que d’un système optimisé pour les smartphones. Les joueurs pourront explorer l...

Contoh Program C++ : Konversi Bilangan Hexadesimal, Oktal , Biner.

Hai Pembaca FajarYusuf.Com yang pintar dan berwawasan tinggi, kali ini FajarYusuf.Com akan post Contoh Program C++ : Konversi Bilangan Hexadesimal, Oktal , Biner . Mari kita membuat program konversi bilangan yang sangat mudah di buat dengan menggunakan bahasa pemrograman C++. Yaitu dengan menggunakan type data long, untuk Hexadesimal dengan rumus : <<hex<<desimal (merubah dari bilangan Desimal ke Hexadesimal) , untuk Oktal dengan rumus : <<oct<<desimal (merubah dari bilangan Desimal ke Oktal). Dan untuk biner dilakukan pembagian 2. Contoh Coding Program C++ Konversi Bilangan: #include<iostream> using namespace std; int main() { long desimal, pembagi=1073741824, bit; cout<<"Nilai Desimal : "; cin>>desimal; cout<<"Hexadesimal = "<<hex<<desimal<<endl; cout<<"Oktal = "<<oct<<desimal<<endl; ...