Salt la conținutul principal
Modulul 1 · Lecția 3 din 53/50 în curs~10 min
Lecții din modul (3/5)

Constante și iota

Constantele sunt valori imuabile cunoscute la momentul compilării. În Go sunt declarat cu const și poate fi tactilat sau netyped. Cele netipizate au a superputere: se adaptează tipului cerut de context, scutindu-te de a trebui să scrie conversii explicite.

Sintaxa de bază

Go
const PI = 3.14
const MaxRetry int = 5
const Name = "eLearner"

MaxRetry este introdus (int): îl puteți atribui numai unui int. PI și Name sunt netipizate: se comportă ca „literale” și se adaptează la contextul.

Go
const PI = 3.14

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

const blocuri

Puteți grupa mai multe constante într-un bloc:

Go
const (
    StateInitial = "INIT"
    StateReady   = "READY"
    StateError   = "ERROR"
)

iota: contorul de enumerare

În interiorul unui bloc const, identificatorul special iota începe la 0 și crește cu 1 pe fiecare linie. Este limbajul pentru a face enumerari:

Go
const (
    Monday = iota // 0
    Tuesday       // 1
    Wednesday     // 2
    Thursday      // 3
    Friday        // 4
)

Rândurile ulterioare moștenesc expresia dacă nu oferă una. De aceea scrierea Tuesday este suficientă fără a repeta = iota.

Modele cu expresii

iota poate apărea în interiorul expresiilor arbitrare:

Go
const (
    KB = 1 << (10 * (iota + 1)) // 1 << 10 = 1024
    MB                          // 1 << 20
    GB                          // 1 << 30
    TB                          // 1 << 40
)

Omiterea unei valori

Dacă nu doriți să atribuiți o valoare unei linii (pentru că doriți ca iota să increment oricum), utilizați identificatorul necompletat _:

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

Rândul tău

Exercițiu#go.m1.l3.e1
Încercări: 0Se încarcă…

Declarați un PI constant cu valoarea 3.14 la nivel de pachet, apoi imprimați-l în interiorul principal.

Se încarcă editorul...
Afișează indiciu

`const PI = 3.14` merge la nivel de pachet, în afara principalului.

Soluție disponibilă după 3 încercări

Exercițiu#go.m1.l3.e2
Încercări: 0Se încarcă…

Definiți un bloc const cu zilele săptămânii (luni, marți, miercuri) numerotate de la 1 folosind iota.

Se încarcă editorul...
Afișează indiciu

Folosiți `iota + 1` pe prima linie a blocului; rândurile ulterioare moștenesc expresia.

Soluție disponibilă după 3 încercări

Quiz#go.m1.l3.e3
Gata

Ce imprimă acest program?

Go
const (
    A = iota * 2
    B
    C
)
fmt.Println(A, B, C)
Opțiuni de răspuns

Recapitulare

  • const pentru valorile imuabile cunoscute la momentul compilării.
  • Constantele Netipizate se adaptează contextului: nu este necesară conversia.
  • const ( ... ) blochează valorile asociate grupului.
  • iota începe de la 0 în fiecare bloc și crește linie cu linie.
  • Modele: enumerare (= iota), bitmask (= 1 << iota), unități (= 1 << (10*iota)).