PUROGU LADESU

ポエムがメインのブログです。

【Golang】 3 関数

関数

引数の型が同じ場合はまとめられる
返り値が複数の場合は()でくくる

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)