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
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.
const PI = 3.14
var f float32 = PI // ok: PI è non tipata, diventa float32
var d float64 = PI // okconst-Blöcke
Sie können mehrere Konstanten in einem Block gruppieren:
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:
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:
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 _:
const (
_ = iota // scarta 0
KB // 1
MB // 2
)Du bist dran
Deklarieren Sie eine konstante PI mit dem Wert 3,14 auf Paketebene und geben Sie sie dann in main aus.
Hinweis anzeigen
`const PI = 3.14` befindet sich auf Paketebene, außerhalb der Hauptebene.
Lösung nach 3 Versuchen verfügbar
Definieren Sie einen const-Block mit den Wochentagen (Montag, Dienstag, Mittwoch), nummeriert von 1 unter Verwendung von Iota.
Hinweis anzeigen
Verwenden Sie `iota + 1` in der ersten Zeile des Blocks; Nachfolgende Zeilen erben den Ausdruck.
Lösung nach 3 Versuchen verfügbar
Was druckt dieses Programm?
const (
A = iota * 2
B
C
)
fmt.Println(A, B, C)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.iotabeginnt in jedem Block bei 0 und erhöht sich zeilenweise.- Muster: Aufzählung (
= iota), Bitmaske (= 1 << iota), Einheiten (= 1 << (10*iota)).