モジュール 1 · レッスン 3 / 5コース内の 3/50~10 min
モジュールのレッスン (3/5)
定数とイオタ
定数は、コンパイル時に既知である不変の値です。囲碁では、
const で宣言され、typed または untyped にすることができます。型なしのものには、
スーパーパワー: コンテキストで必要なタイプに適応し、ユーザーの手間を省きます。
明示的な変換を記述する必要がなくなりました。
基本的な構文
Go
const PI = 3.14
const MaxRetry int = 5
const Name = "eLearner"MaxRetry は型付き (int): int にのみ割り当てることができます。
PI と Name は 型なし です。これらは「リテラル」のように動作し、
コンテキスト。
Go
const PI = 3.14
var f float32 = PI // ok: PI è non tipata, diventa float32
var d float64 = PI // okconst ブロック
複数の定数をブロック内でグループ化できます。
Go
const (
StateInitial = "INIT"
StateReady = "READY"
StateError = "ERROR"
)iota: 列挙カウンタ
const ブロック内では、特別な識別子 iota は 0 から始まります。
各行で 1 ずつ増加します。これは列挙を行うためのイディオムです。
Go
const (
Monday = iota // 0
Tuesday // 1
Wednesday // 2
Thursday // 3
Friday // 4
)後続の行は、式が指定されていない場合、式を継承します。
そのため、= iota を繰り返さなくても、Tuesday を記述するだけで十分です。
表情のあるパターン
iota は、任意の式内に使用できます。
Go
const (
KB = 1 << (10 * (iota + 1)) // 1 << 10 = 1024
MB // 1 << 20
GB // 1 << 30
TB // 1 << 40
)値をスキップする
行に値を割り当てたくない場合 (iota に値を割り当てたいため)
とにかく増分する)、空の識別子 _ を使用します。
Go
const (
_ = iota // scarta 0
KB // 1
MB // 2
)あなたの番です
運動#go.m1.l3.e1
試行回数: 0読み込み中…
値 3.14 の定数 PI をパッケージ レベルで宣言し、それを main 内に出力します。
エディターを読み込み中…
ヒントを表示
`const PI = 3.14` は、メインの外のパッケージ レベルで行われます。
3 回の試行後に解決策が利用可能になります
運動#go.m1.l3.e2
試行回数: 0読み込み中…
iota を使用して、曜日 (月曜日、火曜日、水曜日) を 1 から番号付けした const ブロックを定義します。
エディターを読み込み中…
ヒントを表示
ブロックの最初の行で「iota + 1」を使用します。後続の行は式を継承します。
3 回の試行後に解決策が利用可能になります
Quiz#go.m1.l3.e3
準備完了このプログラムは何を出力しますか?
Go
const (
A = iota * 2
B
C
)
fmt.Println(A, B, C)要約
constはコンパイル時に既知の不変値です。- 型なし 定数はコンテキストに適応します。変換は必要ありません。
const ( ... )は、グループ関連の値をブロックします。iotaは、各ブロックで 0 から始まり、1 行ずつ増加します。- パターン: 列挙型 (
= iota)、ビットマスク (= 1 << iota)、単位 (= 1 << (10*iota))。