首頁  >  文章  >  後端開發  >  golang iota從幾個開始

golang iota從幾個開始

(*-*)浩
(*-*)浩原創
2019-12-03 11:01:133935瀏覽

golang iota從幾個開始

iota是golang語言的常數計數器,只能在常數的表達式中使用。

iota在const關鍵字出現時將被重置為0(const內部的第一行之前),const中每新增一行常數聲明將使iota計數一次(iota可理解為const語句區塊中的行索引)。        (建議學習:go

使用iota能簡化定義,定義枚舉時很有用。

在常數定義中,iota可以方便的迭代一個值從0以步長1遞增,0,1,2,3,4,5…

本例以檔案大小的格式2的10次方進位一次為依據,將KB為1左移10位元,MB左移20位元。 。 。

本文中的Sprintf(“%f”,x)並不會因為定義在String方法內而造成無窮循環bug,因為%f不會去嘗試呼叫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))
}

以上是golang iota從幾個開始的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn