GO日記#2 A tour of Go.
A tour of Goの続き:
- 大文字で始まる関数は、外部から参照できるExported name.
Exported nameの場合、コメントの付与をコンパイラから推奨される。 関数の型名は後ろに書く...直感的には気持ち悪い。
理由は↓にあるらしい。後で読む。 blog.golang.org変数型名の省略が可。//これが有効な場面とは?
- := は、型の省略ができる変数定義 //後で出てくる。
- 関数は複数の戻り値を返せる
package main import "fmt" func swap(x, y string) (string, string) { return y, x // 複数の戻り値 } func main() { a, b := swap("hello", "world") fmt.Println(a, b) }
- Named return value. "Naked" return returnには何も書かず、冒頭で定義した変数が戻る。 関数の冒頭で、何が戻るか判るから可読性が向上する? こういう書き方もできると知っておけばよい気がする。 A tour of Goの説明にもあるように、一目でわかるレベルの関数であれば有効か。(5行程度までかな。)
package main import "fmt" func split(sum int) (x, y int) { //ここで定義 x = sum * 4 / 9 y = sum - x return //ここは何も書かなくとも、x,yが戻り値になる。 } func main() { fmt.Println(split(17)) }
- var 変数宣言を、一度に行える。
package main import "fmt" var c, python, java bool //ここ。 func main() { var i int fmt.Println(i, c, python, java) }
- 初期化子 Initilaizer 初期化子が持つ型によって、型宣言を省略できる。 // 何がうれしいの?いつうれしいの?デメリットは?
package main import "fmt" var i, j int = 1, 2 func main() { var c, python, java = true, false, "no!" //型宣言の省略 fmt.Println(i, j, c, python, java) }
- := 変数定義かつ初期化が可能 関数の中限定 //なんで?
package main import "fmt" func main() { var i, j int = 1, 2 k := 3 //変数定義かつ初期化 c, python, java := true, false, "no!" fmt.Println(i, j, k, c, python, java) }