a
isminde bir değişkenimiz olsun. Bu değişkenimiz tam sayı (int)
tipinde 8
değerini saklıyor olsun. Bu da Go dilinde aşağıdaki gibi oluyor.a
isminde int
tipinde 8
değerini tutan bir değişkenimiz olsun. Ve a
değişkenimize 5
ekleyen bir fonksiyonumuz olsun. Son olarak a
'yı ekrana bastıralım.a
değişkenini ekrana bastırdığımızda sonucun hala 8
olduğunu görüyoruz. Halbuki ekle
fonksiyonunun içerisinde gördüğümün gibi 5
ekliyoruz.a
değişkeninin değişmeme sebebi şudur:
ekle
fonksiyonunun parametresi olarak int
tipinde v
değişkenini oluşturduk. v
değişkenimiz aslında a
'dan gelen değeri kullanmamızı sağlıyor. Yani bize a
'nın kendisini vermiyor. O yüzden v
üzerinde değişiklik yaptığımızda a
'ya yansımayacaktır.a
değişkenini değiştirebilmemiz için bize a
'nın bellekteki adresi gerekiyor. Bunun için de &
(ampersand) işaretini kullanabiliriz.a
'nın bellekteki adresini öğrenebiliyoruz. Sıra geldi bu adres üzerinden a
'nın değerine ulaşabilmeye.*
(yıldız) işaretini kullanabiliriz.b
değişkenine a
'nın adresini atadık. b
'yi bastırdığımızda a
'nın bellekteki adresini görebiliriz. Aynı zamanda *b
şeklinde kullanarak a
'nın içindeki değere de ulaşabiliriz. Bu durumda a ve bdeğişkenleri aynı bellek alanını temsil ediyorlar.a
değişkenine b
üzerinden değişiklik yapmak için aşağıdaki yöntemi uygulayabilirsiniz.ekle
fonksiyonumuzu oluştururken parametre olarak verdiğimiz v
değişkeninin tipinde önce *
işareti koyduk. Bunun sebebi v
değişkeni ile fonksiyonumuza gelecek olan adresin içindeki değere ulaşabilmektir.ekle
fonksiyonunun içerisindeki v
'yi kullanırken de başına *
koyarak kullandık.main
fonksiyonumuzda ekle
fonksiyonunu çağırırken de a
değişkenini &
işareti kullanarak bellekteki adresi ile verdik.a
değişkenine bellekteki adresi ile müdahale etmiş olduk.