Ana içeriğe geç
Modül 1 · Ders 3 ders 5Kurstaki 3/50~10 min
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

Go
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.

Go
const PI = 3.14

var f float32 = PI  // ok: PI è non tipata, diventa float32
var d float64 = PI  // ok

const blok

Birkaç sabiti bir blokta gruplayabilirsiniz:

Go
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:

Go
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:

Go
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:

Go
const (
    _  = iota // scarta 0
    KB        // 1
    MB        // 2
)

Sıra sende

Egzersiz#go.m1.l3.e1
Denemeler: 0Yükleniyor…

Paket seviyesinde 3.14 değerinde sabit bir PI bildirin, ardından bunu main.dll dosyasına yazdırın.

Düzenleyici yükleniyor…
İpucu göster

'const PI = 3.14' main'in dışında paket düzeyinde gider.

3 denemeden sonra çözüm mevcut

Egzersiz#go.m1.l3.e2
Denemeler: 0Yükleniyor…

İota kullanarak haftanın günlerini (Pazartesi, Salı, Çarşamba) 1'den başlayarak bir const bloğu tanımlayın.

Düzenleyici yükleniyor…
İ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

Quiz#go.m1.l3.e3
Hazır

Bu program ne yazdırıyor?

Go
const (
    A = iota * 2
    B
    C
)
fmt.Println(A, B, C)
Cevap seçenekleri

Ö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.
  • iota her blokta 0'dan başlar ve satır satır artar.
  • Desenler: numaralandırma (= iota), bit maskesi (= 1 << iota), birimler (= 1 << (10*iota)).