【オリジナル翻訳】変数


これまでは字面量を用いたプログラム(数値,文字列など)しか見られなかったが,これらのプログラムは特に有用ではなかった.本当に役に立つプログラムを作成するには、変数と文法制御フローの2つの新しい概念を学ぶ必要があります.この章では、変数について説明します.
変数は、特定のタイプと関連付けられた名前を持つストレージスペースです.2章のプログラムを変更して変数を使用します.
package main
import "fmt"
func main() {
var x string = "Hello World"
fmt.Println(x)
}

元のプログラムの文字列の字面量は依然として存在するが,Println関数に直接伝えるのではなく,変数に与えた.Goの変数はキーワードvarで始まり、変数名(x)を指定し、変数のタイプ(string)に従い、最後に変数(Hello World)に値を割り当てます.最後のステップはオプションなので、プログラムを書くことができます.
package main
import "fmt"
func main() {
var x string
x = "Hello World"
fmt.Println(x)
}

Goの変数は代数の変数と似ていますが、わずかな違いもあります.
まず,=号を見ると,「xは文字列Hello Worldに等しい」と理解する傾向がある.Goではこのように理解しても間違いありませんが、「xは文字列Hello Worldの値に割り当てられています」と理解したほうがいいです.この違いは,変数の値がプログラム実行のライフサイクル全体で変化できるため重要である.これらのコードを実行してみます.
package main
import "fmt"
func main() {
var x string
x = "first"
fmt.Println(x)
x = "second"
fmt.Println(x)
}

実際にはこうすることもできます
package main
import "fmt"
func main() {
var x string
x = "first"
fmt.Println(x)
x = "second"
fmt.Println(x)
}

代数の原理で理解すれば、このプログラムはどうでもいい.しかし、これらの命令を一言一言理解すると、それは今とても面白いです.x=x+「second」が表示される場合、「接続変数xと後の字面量の値」と理解する必要があります.=番号の右側の文は実行に制限され、結果は=番号の左の変数に割り当てられます.
x=x+yという形式はプログラミングにおいて一般的であるため,Goには特殊な演算子がある:+= .x=x+「second」をx+=「second」と書くことができ、同じ効果があります(他の演算子でも使用できます).
もう1つのGoと代数の違いは,Goが異なる記号で等しいことを表すことである:== (2つの接続された等号).+と同様に、演算子であり、ブール値を返します.たとえば、
var x string = "hello"
var y string = "world"
fmt.Println(x == y)

helloとworldが等しくないため、プログラムはfalseを返します.言い換えれば、
var x string = "hello"
var y string = "world"
fmt.Println(x == y)

2つの文字列が等しいのでtrueが印刷されます.
変数を作成するときに変数に値を割り当てるのは一般的すぎるため、Go言語ではより短い式がサポートされています.
x := "Hello World"

:=の前にあり、タイプは明記されていません.Goコンパイラは、あなたが付与した字面量タイプから変数のタイプを推測できるので、タイプは明記する必要はありません(変数xに文字列字面量を付与すると、xは文字列と見なされます).コンパイラはvar式で変数タイプを推測することもできます.
var x = "Hello World"

他のタイプでも使用できます.
x := 5
fmt.Println(x)

全体的に、許容される場合はもっと短い形式を使うべきです.
原文住所:http://www.zingscript.com/translate/golang-book