【オリジナル翻訳】役割ドメイン


この章の最初の例に戻ります.
package main
import "fmt"
func main() {
var x string = "Hello World"
fmt.Println(x)
}

この例はもう一つの書き方です.
package main
import "fmt"
var x string = "Hello World"
func main() {
fmt.Println(x)
}

変数をmain関数の外に置くことに注意してください.これは、他の関数もこの変数にアクセスできることを意味します.
var x string = "Hello World"
func main() {
fmt.Println(x)
}
func f() {
fmt.Println(x)
}

関数fは変数xにアクセスできる.私たちがこう書いたとします.
func main() {
var x string = "Hello World"
fmt.Println(x)
}
func f() {
fmt.Println(x)
}

プログラムを実行すると、このようなエラーが表示されます.
.\main.go:11: undefined: x

コンパイラは、関数fにおける変数xが存在しないことを教えてくれます.main関数にのみ存在します.変数xにアクセスできるコード範囲は、変数の役割ドメインと呼ばれます.言語の特性に応じて、Goはコードブロックを役割ドメインとして使用する.これは、変数が最も近いカッコ{}(コードブロック)で有効であり、ネストされたカッコ(コードブロック)を含むが、それら以外は無効であることを意味する.役割ドメインは接触を開始すると理解しにくく,より多くのGoコードの例を見ると,ますます明確になる.
原文住所:http://www.zingscript.com/translate/golang-book