Skip to content

Latest commit

 

History

History
160 lines (116 loc) · 4.89 KB

2.03.md

File metadata and controls

160 lines (116 loc) · 4.89 KB

2.3 短縮形宣言演算子

少しだけプログラミング用語の話です。短縮形宣言演算子 := は変数に値を割り当てます。この例ではx42を割り当てます。(このコードはコンパイルできません。)

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という文のうち、+も演算子です。(加算演算子)427が被演算子です。

について説明します。42 + 7は式です。式は何かを評価して返します。文は通常、式を含み、行のほとんどを占めます。x := 42 + 7は文です。

「文は最小の単独構成要素であり、式が何らかの結果をもたらします。」

「式はプログラミング言語が解釈する一つ以上の値、定数、変数、演算子、関数の組み合わせのことです。それら計算し、別の値を生成します。」

このセクションで主に伝えたいのは、短縮形宣言演算子:=は変数に値を割り当てる主な方法だということです。これはコードブロックの中({}の中)でのみ使うことができます。

これは動作しません。

package main

import (
	"fmt"
)

x := 42

func main() {
	y := "James Bond"
	fmt.Println(x, y)
}

関数の中にのみスコープがあり、その後に宣言です。なので以下のコードではxyが宣言されていないことになりエラーが発生します。

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に変えれば動作します。

さて、短縮形宣言演算子がどういうものか見てきました。新しい変数に値を割り当てるものですね。値は=演算子を使って変更することができます。プログラミング用語である文と式についても学びました。

次のビデオでは、コードブロックの外で変数を宣言し値を割り当てる別の方法を見ていきます。