DEV Community

Aydın Yakar
Aydın Yakar

Posted on • Edited on

4 1

Golang 101: İşaretçiler (Pointers)

Değişkenler hafıza da (memory) "değişken adresi" ve "değeri" şeklinde tutulurlar. Bir değişkenin değerini değiştirmek istediğimizde hafıza da o değişkenin adresine gider ve değerini değiştiririz.

İşaretçiler ise hafızadaki değişkenin adresini almak veya bu adresteki değeri değiştirebilmemiz için kullanılmaktadır.

package main

import "fmt"

func main() {

    i := 1
    fmt.Println(i)

    islem(i)
    fmt.Println(i)

    islemptr(&i)
    fmt.Println(i)

    fmt.Println(&i)

}

func islem(deger int) {
    deger = 0
}

func islemptr(deger *int) {
    *deger = 0
}
Enter fullscreen mode Exit fullscreen mode
1
1
0
0xc000126000
Enter fullscreen mode Exit fullscreen mode

çalıştır!

Örnekte görüldüğü üzere i değişkenine değer atanıp ekrana yazdırılıyor.

func islem(deger int) {
    deger = 0
}
Enter fullscreen mode Exit fullscreen mode

Fonksiyonlar da girdi için kullanılan parametreler aslında girilen değerin hafıza da yeniden oluşturulmasını sağlar. Yani örnekte deger adında yeni bir değişken oluşturup buna fonksiyon içerisinde atama yapmaktadır. Bu durumda fonksiyon dışındaki i değişkenine bir etkisi olamamıştır.

func islemptr(deger *int) {
    *deger = 0
}
Enter fullscreen mode Exit fullscreen mode

Bu fonksiyonda ise int değer bulunduran hafıza adresi alacağını *int türü ile belirtiyoruz. Fonksiyonu çalıştırırken ise işaretçimiz (pointer) i değişkeninin adresini & sembolü ile fonksiyona giriyor. Ardından fonksiyon içerisinde * sembolü ile de ilgili adresin değerini değiştireceğimiz belirtilmiş oluyor.

Yani değişkenin adresini & sembolü ile, değişken adresindeki değerini * sembolü ile belirtiyoruz.

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up