関数
引数の型が同じ場合はまとめられる
返り値が複数の場合は()でくくる
func add2(x, y int) (int, int) { return x + y, x - y }
名前付きの戻り値 Named Return Values
func calc(price, item int) (result int) { result = price * item }
返り値として宣言した名前を変数として扱えるので、returnを書く必要なし
返り値が多くなってわかりにくい時など
Inner Function
関数内で変数に関数を代入して使う
f := func() //名前無し関数も作れる func(x int) { }()
クロージャー closure
関数を返す関数
func increment() func() int {
関数を戻す前に投入したパラメータを、戻した関数の処理に引き継ぐ事ができる
func circle(pi float64) func(radius float64) float64 { return func(radius float64) float64 { return pi * radius * radius } }
可変長引数 Variadic Function Parameter
任意の個数の引数を受け取れる
func foo(params ...int) { len(params) }
関数の中ではスライスで受け取れる
スライスを可変長引数の関数に渡すには
foo(s...) とするとスライスが展開される
コードスタイル
イコールの位置をそろえるのがgoの慣習
列挙する場合は演算子は詰めて書く fmt.Println(1+1, 2*2)