仕事で Goを使う機会があったので、基本から勉強していて、変数宣言について気になった点についてメモがてらまとめます。
Golangにおける変数宣言において、 varをつかって変数宣言をするのが一般的
package main import ( "fmt" ) func main() { // int型で宣言 初期値指定なし var i int // iとjをint型で宣言 初期値指定なし var i, j int // iとjをint型で宣言 初期値指定あり var i, j int = 1, 2 }
上記の方法だと変数毎に型を指定しましたが、 := をつかえば、型を指定せずに、暗黙的に変数宣言ができます。
package main import "fmt" func main() { var i, j int = 1, 2 // := は暗黙の型変形 k := 3 c, python, java := true, false, "no !" // 1 2 3 true false no ! と表示される fmt.Println(i, j, k, c, python ,java) var i int = 1 j := "1" // string k := 1 // int // 変数型の確認 fmt.Println(reflect.TypeOf(i)) fmt.Println(reflect.TypeOf(j)) fmt.Println(reflect.TypeOf(k)) }
ただし、:= をつかった暗黙的宣言は、基本的に関数スコープ内でのみの利用が可能で、関数宣言外では利用できません。
package main import "fmt" // 関数外での暗黙的宣言 l := 1 func main() { t := 1 fmt.Println(t) } // コンパイルエラーが出る $go run test-type.go ./test-type.go:7: syntax error: non-declaration statement outside function body