少しだけプログラミング用語の話です。短縮形宣言演算子 :=
は変数に値を割り当てます。この例ではx
に42
を割り当てます。(このコードはコンパイルできません。)
package main
import (
"fmt"
)
func main() {
x := 42
fmt.Println("Hello, playground")
}
短縮形宣言はコードブロックの中だけでしかできません。Goでは作成した変数は使わなくはいけません。なので上記のコードはtmp/sandbox141801923/main.go:8: x declared and not used
のようなエラーになります。
xを出力すると、エラーにはなりません。Stringのように他の型でも短縮形宣言演算子で割り当てることができます。
package main
import (
"fmt"
)
func main() {
x := 42
y := "James Bond"
fmt.Println(x, y)
}
演算子と被演算子、文と式、そしてキーワードについて説明します。
プログラミング言語にはキーワード(予約語)があります。プログラミング言語が使う単語で、変数名に使うことはできません。例えば、Goでは"package"は予約されています。
"package"を変数名として使おうとするとこのようなエラーが起こります。tmp/sandbox916074896/main.go:8: syntax error: unexpected package, expecting }
(このコードはコンパイルできません。)
package main
import (
"fmt"
)
func main() {
package := 42
y := "James Bond"
fmt.Println(package, y)
}
しかし、"packages"のような変化形なら使うことができます。"package"という単語だけがキーワードとして予約されています。
package main
import (
"fmt"
)
func main() {
packages := 42
y := "James Bond"
fmt.Println(packages, y)
}
Goのキーワード
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
+ & += &= && == != ( )
- | -= |= || < <= [ ]
* ^ *= ^= <- > >= { }
/ << /= <<= ++ = := , ;
% >> %= >>= -- ! ... . :
&^ &^=
:=
を見つけられたと思います。x := 42 + 7
という文のうち、+
も演算子です。(加算演算子)42
と7
が被演算子です。
文と式について説明します。42 + 7
は式です。式は何かを評価して返します。文は通常、式を含み、行のほとんどを占めます。x := 42 + 7
は文です。
「文は最小の単独構成要素であり、式が何らかの結果をもたらします。」
「式はプログラミング言語が解釈する一つ以上の値、定数、変数、演算子、関数の組み合わせのことです。それら計算し、別の値を生成します。」
このセクションで主に伝えたいのは、短縮形宣言演算子:=
は変数に値を割り当てる主な方法だということです。これはコードブロックの中({}の中)でのみ使うことができます。
これは動作しません。
package main
import (
"fmt"
)
x := 42
func main() {
y := "James Bond"
fmt.Println(x, y)
}
関数の中にのみスコープがあり、その後に宣言です。なので以下のコードではx
とy
が宣言されていないことになりエラーが発生します。
package main
import (
"fmt"
)
func main() {
fmt.Println(x, y) /* xとyは宣言されていない */
x := 42
y := "James Bond"
fmt.Println(x, y)
}
以下のコードではtmp/sandbox208846163/main.go:12: no new variables on left side of :=
のようなエラーが発生します。
package main
import (
"fmt"
)
func main() {
x := 42 + 7
y := "James Bond"
fmt.Println(x)
fmt.Println(y)
x := 50
fmt.Println(x)
}
このエラーは、x
が既に存在するという意味です。12行目をx = 50
に変えれば動作します。
さて、短縮形宣言演算子がどういうものか見てきました。新しい変数に値を割り当てるものですね。値は=
演算子を使って変更することができます。プログラミング用語である文と式についても学びました。
次のビデオでは、コードブロックの外で変数を宣言し値を割り当てる別の方法を見ていきます。