So drücken Sie Zehnerpotenzen kompakt als Konstanten aus
In der Programmiersprache Go wird das Konzept der Konstanten mit iota als Mächtigkeit eingeführt Mechanismus zur Erzeugung kompakter und lesbarer konstanter Werte. Übung 3.13 des Buches fordert die Leser dazu auf, Konstanten prägnant zu definieren, die Potenzen von 1000 (KB, MB usw.) darstellen.
Während die Übung den Anschein erweckt, als ob sie eine ausgefeilte Lösung mit Iota erfordert, geben die Autoren ausdrücklich an, dass dieser Ansatz ist aufgrund der fehlenden Potenzierung in Go nicht möglich. Stattdessen ermutigen sie die Leser, „so kompakte wie“-Lösungen zu erkunden.
Ansatz mit Gleitkomma-Literalen
Ein kompakter Ansatz besteht darin, Gleitkomma-Literale mit einem Exponenten zu verwenden Teil. Beispielsweise stellt die Konstante 1e3 den Wert 1000 dar, und jede nachfolgende Konstante kann durch Multiplikation mit 1000 oder einfach durch Addition von 3 zum Exponenten erhalten werden. Diese Methode führt zu der folgenden einzeiligen Deklaration (ohne Leerzeichen):
const ( KB, MB, GB, TB, PB, EB, ZB, YB = 1e3, 1e6, 1e9, 1e12, 1e15, 1e18, 1e21, 1e24 )
Integer-Literals-Ansatz
Alternativ können wir für untypisierte Ganzzahlkonstanten die Folgemultiplikation durchführen Konstanten durch 1000. Wir können jedoch Platz sparen, indem wir stattdessen die vorherige Konstante als Multiplikator verwenden. Beispielsweise kann MB als KB 1000 oder einfach KB KB definiert werden.
const (KB, MB, GB, TB, PB, EB, ZB, YB = 1000, KB*KB, MB*KB, GB*KB, TB*GB, PB*KB, EB*KB, ZB*KB)
Einführung einer zusätzlichen Konstante
Diese Lösung kann sein weiter verfeinert durch Einführung einer zusätzlichen Konstante x, die 1000 darstellt. Durch die Verwendung von x als Multiplikator sparen wir 3 Zeichen.
const (x, KB, MB, GB, TB, PB, EB, ZB, YB = 1000, x, x*x, MB*x, GB*x, TB*GB, PB*x, EB*x, ZB*x)
Rune-Literal-Ansatz
Für maximale Kompaktheit können wir schließlich einer Runenkonstante den Wert 1000 zuweisen. In Unicode stellt der Codepunkt 1000 das Zeichen „Ϩ“ dar, das 1 Zeichen kürzer als „x“ ist.
const (x, KB, MB, GB, TB, PB, EB, ZB, YB = 'Ϩ', x, x*x, MB*x, GB*x, TB*GB, PB*x, EB*x, ZB*x)
Das obige ist der detaillierte Inhalt vonWie können wir Zehnerpotenzen kompakt als Konstanten in Go definieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!