Modül dersleri (3/5)
Sabitler ve iota
Sabitler derleme zamanında bilinen değişmez değerlerdir. Go'da onlar
const ile bildirildi ve typed veya untyped olabilir. Türlenmemiş olanlar
süper güç: bağlamın gerektirdiği türe uyum sağlayarak sizi korurlar
açık dönüşümler yazmak zorunda kalmamak.
Temel sözdizimi
const PI = 3.14
const MaxRetry int = 5
const Name = "eLearner"MaxRetry yazılır (int): onu yalnızca int öğesine atayabilirsiniz.
PI ve Name türlenmemiş: "literaller" gibi davranırlar ve
bağlam.
const PI = 3.14
var f float32 = PI // ok: PI è non tipata, diventa float32
var d float64 = PI // okconst blok
Birkaç sabiti bir blokta gruplayabilirsiniz:
const (
StateInitial = "INIT"
StateReady = "READY"
StateError = "ERROR"
)iota: numaralandırma sayacı
const bloğunun içinde, iota özel tanımlayıcısı 0'dan başlar
ve her satırda 1'er artar. Numaralandırma yapmak için kullanılan deyim:
const (
Monday = iota // 0
Tuesday // 1
Wednesday // 2
Thursday // 3
Friday // 4
)Sonraki satırlar ifadeyi devralmazlar.
Bu nedenle = iota tekrarlamadan Tuesday yazmanız yeterlidir.
İfadeli desenler
iota rastgele ifadelerin içinde görünebilir:
const (
KB = 1 << (10 * (iota + 1)) // 1 << 10 = 1024
MB // 1 << 20
GB // 1 << 30
TB // 1 << 40
)Bir değerin atlanması
Bir satıra değer atamak istemiyorsanız (çünkü iota
yine de artırın), _ boş tanımlayıcısını kullanın:
const (
_ = iota // scarta 0
KB // 1
MB // 2
)Sıra sende
Paket seviyesinde 3.14 değerinde sabit bir PI bildirin, ardından bunu main.dll dosyasına yazdırın.
İpucu göster
'const PI = 3.14' main'in dışında paket düzeyinde gider.
3 denemeden sonra çözüm mevcut
İota kullanarak haftanın günlerini (Pazartesi, Salı, Çarşamba) 1'den başlayarak bir const bloğu tanımlayın.
İpucu göster
Bloğun ilk satırında `iota + 1` kullanın; sonraki satırlar ifadeyi devralır.
3 denemeden sonra çözüm mevcut
Bu program ne yazdırıyor?
const (
A = iota * 2
B
C
)
fmt.Println(A, B, C)Özet
- Derleme zamanında bilinen değişmez değerler için
const. - Türlenmemiş sabitler bağlama uyum sağlar: dönüştürme gerekmez.
const ( ... )grupla ilgili değerleri engeller.iotaher blokta 0'dan başlar ve satır satır artar.- Desenler: numaralandırma (
= iota), bit maskesi (= 1 << iota), birimler (= 1 << (10*iota)).