golangのCONSTのitoaは以内に詳細な使用と長所と短所を分析

最初のitoaはとは何ですか

CONSTにイオタは、一定のカウンタgolang言語であるにCONST定数内,,すなわち、式のみを使用することができます。

(CONST内部の最初の行の前)constキーワードが0にリセットされる場合、各新しい行イオタ定数宣言は、一度カウントされるCONST、イオタ現れます。

行番号を参照して理解することができ、それは、行インデックスはイオタCONSTステートメントブロックを理解されるです。

その性質上例次のように:

その様々な特徴は、一例として説明します。

1は、それぞれの時間のconstが表示され、イオタはゼロに初期化いたします。

const a = iota // a=0 
const ( 
  b = iota     //b=0 
  c            //c=1 
)

2、カスタムタイプ

一定の成長以来、多くの場合、あなたが増分の設定を完了するために、コンパイラに依存することができ、カスタム列挙型が含まれています。

type Newtype int

const ( 
    T1 Newtype = iota // 0 
    T2                // 1 
    T3                // 2 
    T4                // 3 
)

3、スキップ値

type AudioOutput int

const ( 
    OutMute AudioOutput = iota // 0 
    OutMono                    // 1 
    OutStereo                  // 2 
    _ 
    _ 
    OutSurround                // 5 
)

図4に示すように、ビットマスク発現

type Allergen int

const ( 
    IgEggs Allergen = 1 << iota // 1 << 0 which is 00000001 
    IgChocolate                         // 1 << 1 which is 00000010 
    IgNuts                              // 1 << 2 which is 00000100 
    IgStrawberries                      // 1 << 3 which is 00001000 
    IgShellfish                         // 1 << 4 which is 00010000 
)

5、大きさの定義

type ByteSize float64

const (
    _           = iota                   // ignore first value by assigning to blank identifier
    KB ByteSize = 1 << (10 * iota) // 1 << (10*1)
    MB                                   // 1 << (10*2)
    GB                                   // 1 << (10*3)
    TB                                   // 1 << (10*4)
    PB                                   // 1 << (10*5)
    EB                                   // 1 << (10*6)
    ZB                                   // 1 << (10*7)
    YB                                   // 1 << (10*8)
)

図6に示すように、ラインの場合に定義され

通常のフォームと何ら変わりありません

const (
    Apple, Banana = iota + 1, iota + 2
    Cherimoya, Durian
    Elderberry, Fig
)

イオタ次の行の成長は、すぐにそれへの参照を行っていません。

// Apple: 1 
// Banana: 2 
// Cherimoya: 2 
// Durian: 3 
// Elderberry: 3 
// Fig: 4

図7に示すように、途中で切断

中間キューをジャンプ、イオタはもはや上書き増分であり続けるんだろう。しかし、別のイオタがそれに答えると、インクリメントしていきます。コンタクト6に5 itoaはではない以下の実施例は、以下の通りである5と中間インサート6。

const(
    a = iota
    b = 5
    c = iota
    d = 6
    e
    f 
)

そして、その結果をプリントアウト052 666です

賛否両論

あなたが列挙便利定義する場合、定義を簡素化することができますイオタを使用してください。コードを変更する必要がある場合は、だけでなく、比較的容易に拡張または変更します。また、細胞内のいくつかの力で見てください。

しかし、itoaはので、コードはそう簡単に相対して理解されていません。これは、コードの理解の負担が増加します。使用量がitoaは理解していない同僚と一致するだけでなく、勉強したくない場合は、掘削の可能性が高くなります。

だから私はそのシンプルな機能は好きなだけで、つまり、適切な使用をお勧めします。私は主張する:コードの基本的な要件の1つはポスターです。マシンまでと何の問題を実行していない、人々が簡単に読み取ることができる良いコードです。

最後に、類似したのStrConv-itoaはがあることを覚えておいてください

ほとんどの言語は、itoaは中のconstと非常に異なっているitoaは機能を持っています。itoaは関数は、数値、文字列の文字列を変換するために使用されます。itoaは関数のgolangはstrconv.Itoa(int型)文字列です。

明らかに両者を区別するだけでなく、理解し、覚えておくのに役立ちます。


批判や訂正へようこそ

参考:
https://blog.csdn.net/xuduorui/article/details/78653895

おすすめ

転載: www.cnblogs.com/mingbai/p/goConstItoa.html