【GO】Golang ~ 基本編 / 関数 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/04/12/145237
https://dk521123.hatenablog.com/entry/2020/04/03/000000
https://dk521123.hatenablog.com/entry/2020/04/05/000000

の続き。

今回は、「関数」を扱う。
なお、実行環境は、以下のサイトで気軽にできる。

https://play.golang.org/

目次

【1】関数
【2】可変長引数
【3】クロージャ(無名関数)
【4】使用上の注意
 1)デフォルト引数
【5】サンプル
 例1:Hello world
 例2:クロージャ

【1】関数

構文

// C, Javaとは違い、戻り値複数可能(Pythonと同じでできる)
func 関数名 (引数 型, ...) 戻り値の型,... {
  return ...
}

【2】可変長引数

構文

// 「...」で可変長引数(その他のプログラムと同じ)
func 関数名 (引数 ...型) 戻り値の型 {

【3】クロージャ(無名関数)

func 関数名 func() クロージャの型 {

【4】使用上の注意

1)デフォルト引数

* ないらしいが、構造体で代用するみたい

https://stackoverflow.com/questions/2032149/optional-parameters-in-go/13603885#13603885

【5】サンプル

例1:Hello world

package main

func sayHello(name string) string {
  return "Hello, " + name
}

func main() {
  println(sayHello("Mike"))
  println(sayHello("Tom"))
}

出力結果

Hello, Mike
Hello, Tom

例2:クロージャ

package main

func sum(value int) func(int) int {
  total := value
  return func(value int) int {
    total = total + value
    return total
  }
}

func main() {
  x := sum(1)
  println(x(2))
  println(x(3))
}

出力結果

3
6

参考文献

https://qiita.com/gorilla0513/items/7e734c4e0680b5ea341d
https://golang.hateblo.jp/entry/golang-function

関連記事

Golang ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2020/04/03/000000
Golang ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/04/12/145237
Golang ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/04/05/000000
Golang ~ 基本編 / ポインタ/アドレス ~
https://dk521123.hatenablog.com/entry/2021/05/02/000000