Go言語:変数
変数の話
var
ステートメントで変数を宣言する。変数名 型
の形で宣言する。- カンマで区切って羅列すると、複数の変数を宣言できる。
var
ステートメントで初期化することもできる。- 初期化子を与えた場合は、型の指定が不要。
- 変数の型が、初期化子の型になる。
- 関数内では、
var
を省略することができる。- 暗黙的な型宣言ができる代入演算子の
:=
を使用する。 - 2回目以降の代入では、
:=
は使用できない。
- 暗黙的な型宣言ができる代入演算子の
import
ステートメントのように、var
ステートメントで、初期化子をふくめてまとめて指定することができる。
試してみた
エラー
試してみたコードのコメントアウトの1つ目: :=
で再代入しようとする。
- 再代入できないよ、と怒られる。
% GOPATH=$PWD go run src/sample.go # command-line-arguments src/sample.go:28: no new variables on left side of :=
試してみたコードのコメントアウトの2つ目: 型の違う値を再代入する。
- 使えないよ、と怒られる。
% GOPATH=$PWD go run src/sample.go # command-line-arguments src/sample.go:29: cannot use "hoge" (type string) as type time.Duration in assignment
まだわかっていないこと
- 以下のパターンのコード
- 試してみたコードのコメントアウトの1つ目を、
:=
でなく、=
で再代入する。 - 再代入するのは、
int
型の値。
- 試してみたコードのコメントアウトの1つ目を、
- 結果
- うまく代入できる。
var stat, finish time.Time start = time.Now() finish = time.Now() elapsed :=finish.Sub( start ) fmt.Println( elapsed ) //=> 0.00ns(みたいな値) elapsed = 1 //=> 1ns
暗黙的なというところが、まだうまくわかっていない。