İşaretçiyi yerel yapıya döndür


85

Bunun gibi yapılara sahip bazı kod örnekleri görüyorum:

type point struct {
  x, y int
}

func newPoint() *point {
  return &point{10, 20}
}

C ++ arka planım var ve benim için hata gibi görünüyor. Böyle bir yapının anlamsallığı nedir? Yığın veya yığın üzerinde yeni nokta tahsis edildi mi?


1
Benzer bir soru (yanıt dokümantasyona bağlantılar): stackoverflow.com/questions/12098435/…
Denys Séguret

@ DenysSéguret benzer değil
mangusta

Yanıtlar:


109

Go, işaretçi kaçış analizi gerçekleştirir. İşaretçi, bu durumda yaptığı yerel yığından kaçarsa, nesne yığın üzerinde tahsis edilir. Yerel işlevden kaçmazsa, derleyici onu yığına tahsis etmekte özgürdür (herhangi bir garanti vermemesine rağmen; işaretçi kaçış analizinin işaretçinin bu işlev için yerel kaldığını kanıtlayıp kanıtlayamayacağına bağlıdır).


13
İşte Go'nun kaçış analizini biraz daha yakından inceleyen bir blog gönderisi
scvalex

@LilyBallard cevabınızı tam olarak alamadı. Yani, işaretçi kaçış gerçeğinin her zaman mümkün olduğunu, ancak KAÇMAMANIN kanıtlanmasının mümkün olmadığını mı söylüyorsunuz?
mangusta

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.