Go

【Go】関数の基本

関数の基本的な使い方について。

基本の関数

ベーシックな関数の例です。

// 基本の関数
func sample01(msg string) string {
	return msg + ":返答"
}

呼び出し方は以下の通りです。

func main() {
	fmt.Println(sample01("こんにちは")) // "こんにちは:返答" と表示されます。 
}

引数が複数

引数が複数必要な場合、引数をカンマ区切りで指定します。

// 引数が複数
func sample02(arg1 int, arg2 int) int {
	return arg1 + arg2
}

同じ型の場合、省略出来ます。

// 引数が複数 引数型タイプ省略
func sample02(arg1, arg2 int) int {
	return arg1 + arg2
}

複数の戻り値

// 戻り値が複数
func sample03(arg1, arg2 int) (int, error) {
	if arg1 == 0 {
		return 0, errors.New("0を指定しないで下さい。")
	}
	return arg1 / arg2, nil
}

ポイント

  1. 戻り値の型をカンマ区切りで指定する
  2. 全ての戻り値を返却する

実行パターン

通常

多重代入で複数の戻り値を受け取ります。

func main() {
	r, err := sample03(3, 3)
	if err == nil {
		fmt.Println(err)
	}
	fmt.Println(r) // 1 が表示される。
}

エラー

Goでは関数やメソットが呼び出し元へエラーを知らせるには、戻り値にエラーを返却します。例外を発生させるような事はできないようです。
以下は、エラーを返却する時の例になります。エラーの戻り値は最後に返すようにするのがお決まりのようです。

func main() {
	r, err := sample03(0, 3)
	if err == nil {
		fmt.Println(err) // "0を指定しないで下さい。" が表示される。
	}
}

戻り値の無視

Goは変数を使用しないとコンパイルエラーになります。にもかかわらず、ある変数から必要のない戻り値を受け取った場合困ります。
このように戻り値を使用する必要がない場合、_ (アンダースコア) で戻り値を無視できます。

func main() {
	r, _ := sample03(6, 3)
	fmt.Println(r) // 2 が表示される。
}

コメントを残す

メールアドレスが公開されることはありません。

© DeNnie.Lab All Rights Reserved.