Ve bu tür bir değişken bildirimini anlayamıyorum:
_, prs := m["example"]
Tam olarak " _,
" ne yapıyor ve neden yerine böyle bir değişken bildirdiler
prs := m["example"]
( Örneklerle Git'in bir parçası olarak buldum : Haritalar )
Ve bu tür bir değişken bildirimini anlayamıyorum:
_, prs := m["example"]
Tam olarak " _,
" ne yapıyor ve neden yerine böyle bir değişken bildirdiler
prs := m["example"]
( Örneklerle Git'in bir parçası olarak buldum : Haritalar )
prs
muhtemelen "şu an" anlamına gelir. Örneğinizdeki kod "example"
, m
haritada bir girişin olup olmadığını kontrol ediyor .
Yanıtlar:
Dönen değerler için tüm değişkenleri bildirmek zorunda kalmaz. Boş tanımlayıcı
olarak adlandırılır .
De olduğu gibi:
_, y, _ := coord(p) // coord() returns three values; only interested in y coordinate
( diğer ' _
' kullanım durumu içe aktarma içindir )
Dönüş değerini attığı için , " Etkili Git, harita " da gösterilen " Bir haritada anahtar varlığı nasıl test edilir? "
_, present := timeZone[tz]
Gerçek değer hakkında endişelenmeden haritada bulunup bulunmadığını test etmek için, boş bir tanımlayıcı, basit bir alt çizgi (
_
) kullanabilirsiniz.
Boş tanımlayıcı, zararsız bir şekilde atılan değerle herhangi bir türden herhangi bir değerle atanabilir veya bildirilebilir.
Bir haritadaki mevcudiyeti test etmek için, değer için olağan değişken yerine boş tanımlayıcıyı kullanın.
Jsor'un yorumlara eklediği gibi :
"genel olarak kabul edilen standart", üyelik testi değişkenlerini "ok" olarak adlandırmaktır (aynı kanal okumasının geçerli olup olmadığını kontrol etmek için de geçerlidir)
Bu, test ile birleştirmenize izin verir:
if _, err := os.Stat(path); os.IsNotExist(err) {
fmt.Printf("%s does not exist\n", path)
}
Bunu döngüde de bulabilirsiniz:
Aralıktaki (değer) yalnızca ikinci öğeye ihtiyacınız varsa, ilkini atmak için boş bir tanımlayıcı, bir alt çizgi kullanın:
sum := 0
for _, value := range array {
sum += value
}
Go derleyicisi asla kullanmadığınız değişkenler oluşturmanıza izin vermez.
for i, value := range x {
total += value
}
Yukarıdaki kod, "bildirdim ve kullanılmadı" hata mesajı verecektir.
Döngümüzün içinde i kullanmadığımız için bunu şu şekilde değiştirmemiz gerekiyor:
for _, value := range x {
total += value
}
_
boş tanımlayıcıdır. Yani atanması gereken değer atılır.
Burada example
atılan anahtarın değeridir . İkinci kod satırı, varlık boole değerini atacak ve değeri içinde saklayacaktır prs
.
Bu nedenle, yalnızca haritada bulunup bulunmadığını kontrol etmek için değeri atabilirsiniz. Bu, bir haritayı set olarak kullanmak için kullanılabilir.
Sözdizimi bir değişken adı gerektirdiğinde, ancak program mantığı gerektirmediğinde boş tanımlayıcı kullanılabilir, örneğin, yalnızca öğe değerine ihtiyaç duyduğumuzda istenmeyen bir döngü indeksini atmak için.
Alıntı:
Go Programlama Dili (Addison-Wesley Profesyonel Hesaplama Serisi)
Brian W. Kernighan
Bu materyal telif haklarıyla korunuyor olabilir.
Boş tanımlayıcı olarak adlandırılır ve döndürülecek olan değeri atıp referans vermek istemediğiniz durumlarda yardımcı olur.
Kullandığımız bazı yerler:
Kullanılmayan değişken için harika kullanım durumu, yalnızca kısmi bir çıktıya ihtiyaç duyduğunuz durumdur. Aşağıdaki örnekte sadece değeri (eyalet nüfusu) yazdırmamız gerekiyor.
package main
import (
"fmt"
)
func main() {
statePopulations := map[string]int{
"California": 39250017,
"Texas": 27862596,
"Florida": 20612439,
}
for _, v := range statePopulations {
fmt.Println(v)
}
}
Temel _,
olarak, boş tanımlayıcı olarak bilinir. GO'da kullanılmayan değişkenlere sahip olamayız.
Örnek olarak, bir dizi boyunca yineleme yaparken, değer: = aralık kullanıyorsanız , yineleme için bir i değeri istemezsiniz . Ancak i değerini atlarsanız, bir hata döndürür. Ama i ilan edip kullanmadıysanız, bu da bir hata verecektir.
Bu nedenle, kullanmamız gereken yer orasıdır _,
.
Ayrıca gelecekte bir fonksiyonun dönüş değerini istemediğinizde de kullanılır.
Golang'da kullanılmayan bir değişkene izin verilmez
Başka programlama dillerinden geliyorsanız, buna alışmak biraz zor olabilir. Ancak bu, daha temiz bir kodla sonuçlanır. Yani a kullanarak, _
orada bir değişken olduğunu bildiğimizi söylüyoruz ama onu kullanmak istemiyoruz ve derleyiciye bundan beni şikayet etmediğini söylüyoruz. :)