Sobes.tech
Junior — Middle

Go dilinde boş arayüz ifadesi ile nil değeri arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, boş arayüz (interface{}), herhangi bir türdeki değeri içerebilen bir türdür, bunlar arasında nil de bulunur. Ancak, boş arayüz ifadesi ve nil değeri farklı şeylerdir.

  • var x interface{} — varsayılan olarak nil olan, tür ve değer içermeyen boş arayüz türünde bir değişken x.
  • Ama x'e bir değer atarsanız, örneğin x = 5, o zaman x artık nil değildir çünkü int türünde ve değeri 5tir.

Fark, Go'daki arayüzün içsel olarak iki göstericiyle temsil edilmesidir: biri türe, diğeri değere. Arayüz, yalnızca her iki gösterici de nil ise nil kabul edilir.

Örnek:

var i interface{} // i == nil
var p *int = nil

 i = p // i != nil, çünkü *int türü mevcut, değeri `nil` olsa da

fmt.Println(i == nil) // false

Bu nedenle, boş arayüz belirli bir türdeki nil değerini içerebilir, ancak arayüz kendisi nil değildir. Bu, Go'da nil kontrollerinde önemli bir noktadır.