Go 言語の定数


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

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

定数定義形式:

const identifier [type] = value

コンパイラは値に基づいて変数の型を推測できるため、型指定子 [type] を省略できます。

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

  • 隐式类型定义: const b = "abc"

暗黙的な型定義: const b = "abc"

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

const c_name1, c_name2 = value1, value2

次の例は定数の適用を示しています:

package main

import "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("面积为 : %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() 定数を使用して式の値を計算するために使用できます。定数式では、関数は組み込み関数である必要があります。そうでない場合はコンパイルされません:

package main

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

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

上記の例の結果は次のようになります:

abc 3 16

iota

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

各 const キーワードが出現すると、それは 0 にリセットされ、次の const が出現する前に、iota が出現するたびに、それが表す数値が自動的に 1 ずつ増加します。

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

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

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

const (
    a = iota
    b
    c
)

iota 使用法

package main

import "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 の例を見てみましょう:

package main

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 になります。 🎜🎜