iota ist ein konstanter Zähler in der Golang-Sprache und kann nur in konstanten Ausdrücken verwendet werden.
iota wird auf 0 zurückgesetzt, wenn das Schlüsselwort const erscheint (vor der ersten Zeile in const). Jede neue Zeile der Konstantendeklaration in const führt dazu, dass iota einmal zählt( Iota kann als Zeilenindex im const-Anweisungsblock verstanden werden. (Empfohlenes Lernen: go)
Die Verwendung von iota kann die Definition vereinfachen und ist beim Definieren von Aufzählungen sehr nützlich.
In der Konstantendefinition kann iota bequem einen Wert von 0 in Schritten von 1, 0,1,2,3,4,5... iterieren.
Dieses Beispiel basiert auf dem 10. Potenzübertrag des Dateigrößenformats 2, wobei KB um 10 Bit nach links und MB um 20 Bit nach links verschoben werden. . .
Sprintf("%f",x) in diesem Artikel verursacht keinen Endlosschleifenfehler, da es in der String-Methode definiert ist, da %f nicht versucht, String() aufzurufen
package main import ( "fmt" ) type ByteSize float64 const ( _ = iota KB ByteSize = 1 << (10*iota) MB GB TB PB EB ZB YB ) func (b ByteSize) String() string{ switch { case b >= YB: return fmt.Sprintf("%.2fYB",b/YB) case b >= ZB: return fmt.Sprintf("%.2fZB",b/ZB) case b >= EB: return fmt.Sprintf("%.2fEB",b/EB) case b >= PB: return fmt.Sprintf("%.2fPB",b/PB) case b >= TB: return fmt.Sprintf("%.2fTB",b/TB) case b >= GB: return fmt.Sprintf("%.2fGB",b/GB) case b >= MB: return fmt.Sprintf("%.2fMB",b/MB) case b >= KB: return fmt.Sprintf("%.2fKB",b/KB) } return fmt.Sprintf("%.2fB",b) } func main() { fmt.Println(ByteSize(1e10)) }
Das obige ist der detaillierte Inhalt vonSo starten Sie Golang Iota. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!