これをやる
そしてメモりたくなったことをメモって行く
パッケージについて
- 慣習として、パッケージ名はimportのパスの最後のエレメントになる
math/rand
ならrand
https://tour.golang.org/basics/1
Exported name
大文字で始まる名前はエクスポートされる
Piはエクスポートされるが、piはされない
- ※ なんか色々ぶっ飛ばした感があってよくわからん
- ここでいう名前とはなんだろう。関数名とか変数名とか全部のスコープの話かな
- ※ 変数?(定数?)関数名?とか?のスコープが命名規則で決まる話?こういう命名規則で書こうぜ的な話?
https://tour.golang.org/basics/3
関数は結果を複数返せる
package main import "fmt" func getMultipleValue() (string, string) { return "hello", "world" } func main() { a, b := getMultipleValue() fmt.Println(a, b) }
3つ返す関数を2つの変数で受けるとかはダメっぽい
package main import "fmt" func getMultipleValue() (string, string, string) { return "hello", "world", "goodbye" } func main() { a, b := getMultipleValue() fmt.Println(a, b) }
https://tour.golang.org/basics/6
名前つき戻り値
関数の戻り値に定義した名前の変数に値を格納し、return文の引数を指定しないと、最後に格納された値が返却される。
package main import "fmt" func hello() (hello, world string) { hello = "hello" world = "world" return } func main() { a,b := hello() fmt.Println(a) fmt.Println(b) }
可読性を損なうので短い関数にのみ利用すること。
https://tour.golang.org/basics/7
var
var文で変数のリストを定義できる。パッケージもしくは関数のレベルで宣言できる。 型は文の最後に来る。
var a, b, c int
初期化
var a, b, c int = 1, 2, 3
https://tour.golang.org/basics/8
:=
関数内では:=がvarによる変数宣言および初期化と等価に使える。
a := "test" var a = "test"
Stringの初期値は空文字
value stirng
fmt.println(value)
はnullとかじゃなくて空文字になる。
型変換
T(v)でvをT型に変換できる。
型違いの値をそのまま代入するとコンパイルエラー。(オートボクシング的なのはなくてこの構文はキャストみたいな感じなのかな)
型推論
型を明示していない変数は右辺の値で型が推論される。 右辺に代入した値の型が明示的な場合、変数の型は代入された値の型になる。