Direkt zum Hauptinhalt springen
eLearner.app
Modul 1 · Lektion 3 von 53/50 im Kurs~10 min
Lektionen des Moduls (3/5)

Konstanten und iota

Konstanten sind unveränderliche Werte, die zur Kompilierungszeit bekannt sind. In Go sind sie es mit const deklariert und kann typisiert oder untypisiert sein. Untypisierte haben eine Superkräfte: Sie passen sich dem vom Kontext geforderten Typ an und schonen Sie von der Notwendigkeit, explizite Konvertierungen schreiben zu müssen.

Grundlegende Syntax

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

MaxRetry ist typisiert (int): Sie können es nur einem int zuweisen. PI und Name sind untypisiert: Sie verhalten sich wie „Literale“ und passen sich an den Kontext.

Go
const PI = 3.14

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

const-Blöcke

Sie können mehrere Konstanten in einem Block gruppieren:

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

iota: der Aufzählungszähler

Innerhalb eines const-Blocks beginnt die spezielle Kennung iota bei 0 und erhöht sich in jeder Zeile um 1. Es ist die Redewendung für Aufzählungen:

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

Nachfolgende Zeilen erben den Ausdruck, wenn sie keinen bereitstellen. Deshalb reicht es aus, Tuesday zu schreiben, ohne = iota zu wiederholen.

Muster mit Ausdrücken

iota kann in beliebigen Ausdrücken vorkommen:

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

Einen Wert überspringen

Wenn Sie einer Zeile keinen Wert zuweisen möchten (weil Sie möchten, dass iota dies tut). ohnehin zu erhöhen), verwenden Sie den leeren Bezeichner _:

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

Du bist dran

Übung#go.m1.l3.e1
Versuche: 0Wird geladen…

Deklarieren Sie eine konstante PI mit dem Wert 3,14 auf Paketebene und geben Sie sie dann in main aus.

Editor wird geladen…
Hinweis anzeigen

`const PI = 3.14` befindet sich auf Paketebene, außerhalb der Hauptebene.

Lösung nach 3 Versuchen verfügbar

Übung#go.m1.l3.e2
Versuche: 0Wird geladen…

Definieren Sie einen const-Block mit den Wochentagen (Montag, Dienstag, Mittwoch), nummeriert von 1 unter Verwendung von Iota.

Editor wird geladen…
Hinweis anzeigen

Verwenden Sie `iota + 1` in der ersten Zeile des Blocks; Nachfolgende Zeilen erben den Ausdruck.

Lösung nach 3 Versuchen verfügbar

Quiz#go.m1.l3.e3
Bereit

Was druckt dieses Programm?

Go
const (
    A = iota * 2
    B
    C
)
fmt.Println(A, B, C)
Antwortoptionen

Zusammenfassung

const für unveränderliche Werte, die zur Kompilierungszeit bekannt sind.

  • Untypisierte Konstanten passen sich dem Kontext an: keine Konvertierung erforderlich.
  • const ( ... ) blockiert gruppenbezogene Werte.
  • iota beginnt in jedem Block bei 0 und erhöht sich zeilenweise.
  • Muster: Aufzählung (= iota), Bitmaske (= 1 << iota), Einheiten (= 1 << (10*iota)).