iota est un compteur constant en langage golang et ne peut être utilisé que dans des expressions constantes.
iota sera réinitialisé à 0 lorsque le mot-clé const apparaît (avant la première ligne à l'intérieur de const). Chaque nouvelle ligne de déclaration de constante dans const fera compter iota une fois(). iota peut être compris comme l'index de ligne dans le bloc d'instruction const). (Apprentissage recommandé : go)
L'utilisation d'iota peut simplifier la définition et est très utile lors de la définition d'énumérations.
Dans la définition constante, iota peut facilement itérer une valeur de 0 par pas de 1, 0,1,2,3,4,5...
Cet exemple est basé sur la 10ème puissance portée du format de taille de fichier 2, en décalant les Ko vers la gauche de 10 bits et les Mo vers la gauche de 20 bits. . .
Le Sprintf("%f",x) dans cet article ne provoquera pas de bug de boucle infinie car il est défini dans la méthode String, car %f n'essaiera pas d'appeler String()
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)) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!