ホームページ  >  記事  >  バックエンド開発  >  golang iotaの起動方法

golang iotaの起動方法

(*-*)浩
(*-*)浩オリジナル
2019-12-03 11:01:133919ブラウズ

golang iotaの起動方法

#iota は golang 言語の定数カウンターであり、定数式でのみ使用できます。

iota は、const キーワードが現れると (const 内の最初の行の前に) 0 にリセットされます。const の定数宣言の新しい行ごとに、iota は 1 回カウントされます( iota は、const ステートメント ブロック内の行インデックスとして理解できます)。 (推奨学習: go)

iota を使用すると定義が簡素化され、列挙型を定義するときに非常に役立ちます。

定数定義では、iota は 0 から 1、0、1、2、3、4、5...

のステップで値を反復できます。

この例は、ファイル サイズ フォーマット 2 の 10 乗キャリーに基づいており、KB を 10 ビット左に、MB を 20 ビット左にシフトします。 。 。

この記事の Sprintf("%f",x) は String メソッドで定義されているため、無限ループのバグは発生しません。%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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。