← 記事一覧へ

Go 学習記録(3):変数と定数

Go 基礎学習の第 3 回。宣言、定数、iota、スコープを整理します。

変数と定数

Go は静的型付けの言語で、変数の型はコンパイル時に決まります。

変数は宣言してから使います。

すべての変数は型を持ちます。

宣言後に変数の型は変わりません。

1. 変数

1.1. 変数の宣言方法

// 第一种
var age int (string bool 等)
age = 10
// 第二种
var age = 10
// 第三种
age := 10

1.2. パッケージ変数とローカル変数

関数の外で宣言した変数は、パッケージ内で利用できます。

関数内で宣言した変数は、その変数を囲むブロックのスコープに従います。

パッケージ変数は未使用でも構いませんが、未使用のローカル変数はコンパイルエラーになります。

1.3. 複数の変数を宣言する

// 第一种
var user1, user2, user3 string
// 第二种
var user1, user2, user3 = "user1", 1, true
// 第三种
var (
	user1 string
	user2 int
	user3 bool
)

1.4. 注意点

  1. 利用前に宣言します。
  2. 代入する値は変数の型に適合する必要があります。
  3. 同じ宣言スコープで名前を重複させません。
  4. age := 1 のような短い宣言は、パッケージ直下では使えません。
  5. 変数には既定のゼロ値があります。
var age int //age默认为0
var name string //name默认为""
var isOk bool //isOk默认为false
  1. パッケージ変数は未使用でも構いませんが、ローカル変数ではエラーになります。

2. 定数

定数は宣言時に値を指定し、その後は変更できません。

例では区別のため定数名を大文字にしていますが、言語の必須規則ではありません。

2.1. 定数の宣言方法

// 第一种
const PI float32 = 3.1415926 //显示定义
const PI = 3.1415926 //隐式定义
// 之后PI不能改变
PI = 3.1415926 //报错

2.2. まとめて宣言する

まとめて宣言する書き方にも、複数の形式があります。

const(
	PI float32 = 3.1415926
	PI2 = 'a'
	PI3 = 3
)

特殊な例:

cosnt(
    x int  = 1p
    y
    s = 'a'
    z
    m
)

go

2.3. 注意点

  1. 定数には真偽値、数値、文字列を使えます。
  2. 定数は宣言後に使わなくても構いません。
  3. 型を指定する場合、値はその型で表現できる必要があります。

3、iota

連続する定数値を生成するための特殊な識別子です。

3.1. iota の使い方

//写法1
const (
    ERR0 = iota
    ERR1 = iota
    ERR2 = iota
    ERR3 = iota
    ERR4 = iota
)
// 输出为:0、1、2、3、4
//写法2
const (
    ERR0 = iota
    ERR1
    ERR2
    ERR3
    ERR4
)
// 输出也为0、1、2、3、4

iota のカウンタとしての動作を示します。 go

go

代入する値にかかわらず、定数の指定が進むごとにカウンタが増えます。
新しい const 宣言では、iota は再び 0 から始まります。

3.2. 注意点

  1. 式を変更した後、必要に応じて iota を明示し直します。
  2. iota は連続する型なし整数定数を表します。
  3. 関連する定数の宣言を簡潔にできます。
  4. 新しい const 宣言ごとに 0 に戻ります。

4. ブランク識別子

捨てる値にはアンダースコアを使います。未使用変数のエラーにはなりません。

例:var _ int = 10

ブランク識別子は、複数の戻り値の一部を捨てるときなどに使うプレースホルダーです。次に例を示します。 go

5. 変数のスコープ

5.1. パッケージ変数

関数の外で宣言した変数は、可視性の規則に従ってパッケージ内で利用できます。

5.2. ローカル変数

関数内で宣言した変数は、囲んでいるブロックの範囲に制限されます。

利用時には、この境界を意識する必要があります。

この記事の日付について

旧サイトに記載された日付を保持しています。実際に書き始めた時期は、これより早い可能性があります。

同じシリーズ · Go の基礎学習

前の記事Go 学習記録(2):構成と実行 ←次の記事Go 学習記録(4):基本的な型 →