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