Go言語:変数

変数の話

  • varステートメントで変数を宣言する。
    • 変数名 型の形で宣言する。
    • カンマで区切って羅列すると、複数の変数を宣言できる。
  • varステートメントで初期化することもできる。
    • 初期化子を与えた場合は、型の指定が不要。
    • 変数の型が、初期化子の型になる。
  • 関数内では、varを省略することができる。
    • 暗黙的な型宣言ができる代入演算子:=を使用する。
    • 2回目以降の代入では、:=は使用できない。
  • importステートメントのように、varステートメントで、初期化子をふくめてまとめて指定することができる。

試してみた

変数: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型の値。
  • 結果
    • うまく代入できる。
var stat, finish time.Time

start = time.Now()
finish = time.Now()
elapsed :=finish.Sub( start )
fmt.Println( elapsed )
//=> 0.00ns(みたいな値)
elapsed = 1
//=> 1ns

暗黙的なというところが、まだうまくわかっていない。