Go Pointer

Bugüne kadar hep değişkenler oluşturduk ve onların değerlerini değiştirerek programlar yazdık. Yani yazdığımız kod belleğe hunharca yüklendi.

Her oluşturduğumuz değişken bellekte yeni bir birimi işgal etti ve biz o işgal sonucunda değişkenimizi istediğimiz zaman kullandık.

İşte işaretçiler dediğimiz şey ise pointer‘lar yani değerin hafızaki yerini mimler.

package main

import "fmt"

func main() {

         a := 12 
         b := &a
         

         fmt.Println(b)
         fmt.Println(*b)

         *b = 23
         
         fmt.Println(a)
         
}

Burada ben bir a değişkeni oluşturdum ve değerini 12 verdim. Daha sonra b değişkeni oluşturdum ve bu değişkene a’nın değerini değil yerini atadım. Yani hem a hem b ikisi de hafızada aynı yere bakıyor. Ve özellikle b yi hafızadaki yerini göstersin diye yazdırdım.

sonra b yi nasıl okuyacağımız da

fmt.Println(*b)

burada belirtildi. İşaretleyiciler ile bir değeri mimlediğinizde onun değerini okumak için * simgesi kullanıyoruz.

Yine onun değerini değiştirmek için de  *b=23  dediğimizde o yerdeki değer değişecektir.

En son a yı hiç değiştirmediğimiz halde 23 olmasını bekliyoruz ve bu kodun çıktısı;

0x10410020
12
23

https://play.golang.org/p/swHV_pEFRw

alierbey | 17/11/2017

Leave a Reply