İşaretçiler Nedir?
Adres alma işleci, başvuru kaldırma ve nil işaretçileri
İşaretçiler Nedir?, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
Bellek Adresleri
Her değişken bir bellek adresinde bulunur. Bir işaretçi bu adresi depolar. Go'da işaretçilerin türü vardır: *int, bir int değerinin adresini tutar.
Adres Alma İşleci &
Bir değişkenin adresini almak için & kullanınız:
package main
import "fmt"
func main() {
x := 42
p := &x
fmt.Println(p) // 0xc000... (address)
fmt.Println(*p) // 42 (value at address)
}Başvuruyu Çözümleme *
İşaretçinin adresindeki değeri okumak veya yazmak için * kullanınız:
package main
import "fmt"
func main() {
n := 10
p := &n
*p = 99
fmt.Println(n) // 99
}Boş İşaretçiler
Bir işaretçinin sıfır değeri nil değeridir. Boş bir işaretçinin başvurusunu çözümlemek paniğe neden olur:
package main
import "fmt"
func main() {
var p *int
fmt.Println(p) // <nil>
fmt.Println(p == nil) // true
// *p = 1 — PANIC
}İşaretçi Türleri
Her işaretçi türü, işaret ettiği öğeye özgüdür:
package main
import "fmt"
func main() {
i := 1
s := "hello"
pi := &i // *int
ps := &s // *string
fmt.Printf("%T %T\n", pi, ps) // *int *string
}Kullanmadan Önce Boşluk Denetimi
Kodunuzun dışından alınan bir işaretçinin başvurusunu çözümlemeden önce her zaman boş olup olmadığını denetleyiniz:
package main
import "fmt"
func printInt(p *int) {
if p == nil {
fmt.Println("nil pointer")
return
}
fmt.Println(*p)
}
func main() {
v := 7
printInt(&v)
printInt(nil)
}Yapılara İşaretçiler
Bir işaretçi üzerinden yapı alanlarına erişmekte aynı nokta gösterimi kullanılır; Go işaretçinin başvurusunu otomatik olarak çözer:
package main
import "fmt"
type Point struct{ X, Y int }
func main() {
p := &Point{1, 2}
p.X = 10 // same as (*p).X = 10
fmt.Println(*p) // {10 2}
}İşaretçi Karşılaştırması
İki işaretçi aynı değişkeni (aynı adresi) gösteriyorsa veya ikisi de boşsa birbirine eşittir:
package main
import "fmt"
func main() {
a := 1
p1 := &a
p2 := &a
p3 := new(int)
*p3 = 1
fmt.Println(p1 == p2) // true — same address
fmt.Println(p1 == p3) // false — different address
}Yığın ve Öbek Karşılaştırması
Go derleyicisi, kaçış çözümlemesi aracılığıyla bir değişkenin yığında mı yoksa öbekte mi bulunacağına karar verir. Yerel bir değişkenin adresini alıp döndürdüğünüzde Go, değişkeni otomatik olarak öbeğe taşır; bunu elle yönetmeniz gerekmez.
İşaretçiler Ne Zaman Kullanılmamalı
Her şeyin bir işaretçiye ihtiyacı yoktur:
- Küçük değer türlerini (int, bool, küçük yapılar) kopyalamak, başvurularını çözümlemekten daha ucuzdur
- Eş yordamlar arasında paylaşılan değişmez veriler değer olarak güvenlidir
- İşaretçileri öncelikle değiştirme veya büyük yapılar için kullanınız
Kısa Kontrol
& işleci ne döndürür?
Özet: İşaretçiler
Temel çıkarımlar:
&vadresi alır;*pişaretçinin başvurusunu çözer- Sıfır değeri boştur; başvuruyu çözümlemeden önce her zaman denetleyiniz
- Go, yapı işaretçisi alan erişimlerinde başvuruyu otomatik olarak çözer
- Kaçış çözümlemesi, yığın ve öbek kullanımını otomatik olarak yönetir
Alıştırma Görevi
İşaretçileri kullanarak iki tamsayının değerlerini yer değiştiren bir swap(a, b *int) işlevi yazınız. Bu işlevi main içinden çağırınız ve öncesini ve sonrasını yazdırınız.
Sıkça Sorulan Sorular
“İşaretçiler Nedir?” dersi ücretsiz mi?
Evet — “İşaretçiler Nedir?” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“İşaretçiler Nedir?” dersinde ne öğreneceğim?
Adres alma işleci, başvuru kaldırma ve nil işaretçileri Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“İşaretçiler Nedir?” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- İşaretçiler Nedir?
- İşaretçiler ve İşlevler
- Yöntemlerde İşaretçi Alıcıları
- new() ve İşaretçilerin Kullanılacağı Durumlar