Happy file Go 言語定数

Go言語定数

定数は、単純な値の識別子であり、プログラムの実行中に変更されない量です。

定数のデータ型は、ブール、数値 (整数、浮動小数点、複素数)、および文字列のみです。

定数の定義形式:

const identifier [type] = value

型指定子 [type] は省略できます。これは、コンパイラが値から変数の型を推測できるためです。

  • 明示的な型定義: const b string = "abc"
  • 暗黙の型定義: const b = "abc"

同じ型の複数の宣言は、次のように省略できます。

const c_name1, c_name2 = value1, value2

次の例は、定数の使用を示しています。

パッケージメイン

「fmt」をインポート

func main() { const LENGTH int = 10 const WIDTH int = 5 var area int const a, b, c = 1, false, "str" //複数代入



area = LENGTH * WIDTH
fmt.Printf("The area is: %d", area)
println()
println(a, b, c)
}

上記の例を実行した結果は次のとおりです。


面积为 : 50
1 false str

定数は列挙型としても使用できます。


const (
    Unknown = 0
    Female = 1
    Male = 2
)

数字の 0、1、2 は、それぞれ不明な性別、女性、男性を表します。

定数は、len()、cap()、unsafe.Sizeof() 関数を使用して式を評価できます。定数式では、関数は組み込み関数でなければなりません。それ以外の場合はコンパイルされません。

パッケージメイン

import "unsafe"
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(a)
)

func main(){ println(a, b, c) }

上記の例を実行した結果は次のとおりです。


abc 3 16

イオタ

特別な定数である iota は、コンパイラによって変更できる定数と見なすことができます。

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

iota は列挙値として使用できます。


const (
    a = iota
    b = iota
    c = iota
)

最初の iota は 0 に等しく、その値は iota が新しい行で使用されるたびに自動的に 1 ずつ増加します; したがって、a=0、b=1、c=2 は次のように省略できます:


const (
    a = iota
    b
    c
)

イオタの使い方

パッケージメイン

「fmt」をインポート

func main() { const ( a = iota //0 b //1 c //2 d = "ha" //独立値、iota += 1 e //"ha" iota += 1 f = 100 // iota +=1 g //100 iota +=1 h = iota //7, レジュームカウントi //8 ) fmt.Println(a,b,c,d,e,f,g,h,i) }












上記の例を実行した結果は次のとおりです。


0 1 2 ha ha 100 100 7 8

別の興味深い iota の例を見てください。

パッケージメイン

import "fmt"
const (
i=1<<iota
j=3<<iota
k
l
)

func main() { fmt.Println("i=",i) fmt.Println("j=",j) fmt.Println("k=",k) fmt.Println("l=",l) }




上記の例を実行した結果は次のとおりです。


i= 1
j= 6
k= 12
l= 24

iota は 0 から 1 を自動的に追加することを意味するので、i=1<<0、j=3<<1 (<< は左シフトを意味します )、つまり i=1、j=6、これは問題ありません。キーはk と l の出力結果から、k=3<<2、l=3<<3 となります。

簡単なステートメント:

  • i=1 : 左に 0 ビットシフトし、1 のままです。
  • j=3  : 1 ビット左にシフトし、2 進数の 110、つまり 6 になります。
  • k=3  : 左に 2 ビットシフトし、2 進数の 1100、つまり 12 になります。
  • l=3  : 3 ビット左にシフトし、バイナリ 11000、つまり 24 になります。

注:<<n==*(2^n)。

おすすめ

転載: blog.csdn.net/weixin_46626339/article/details/129563282