見出し画像

関数(Go言語)

今回は,前回の変数に引き続き,関数について学習していきましょう!

それでは~Go!

関数って何?

関数とは,「何かを入れて,何かが出てくる仕組み」です!(←ざっくりw)

たとえば,
  100円(引数) ⇒ 自動販売機(関数) ⇒ ピザ(戻り値)
みたいな感じで,自販機に100円入れたら,ピザがでてきた!とすると,

この自販機は,立派な関数です.

そして,ソフトウェアの世界では,
 100円のことを,「引数」
 自販機のことを,「関数」
 ピザ のことを,「戻り値」

と呼びます.かたくるしーですねぇ~w

以上が関数の説明です!(←ほんとにだいじょぶ?)
それでは,Go言語の関数を見ていきましょー!

説明用のソースコードの全文

本日の説明用コードは,下記の通りです!

package main

import (
	"fmt" //標準入出力関数の標準パッケージ
)

func main() {
	/*
		戻り値が1つの関数
	*/
	var ret int // 整数型の変数を宣言
	ret = Add1(1, 2)
	fmt.Println("ret = ", ret)
	ret = Add2(1, 2)
	fmt.Println("ret = ", ret)
	ret = Add3(1, 2)
	fmt.Println("ret = ", ret)

	/*
		戻り値が複数の関数
	*/
	x, y := Swap1(1, 2)
	fmt.Println("x,y = ", x, ",", y)
	x, y = Swap2(x, y)
	fmt.Println("x,y = ", x, ",", y)
	x, y = Swap3(x, y)
	fmt.Println("x,y = ", x, ",", y)

}

/*
	足し算関数
*/
func Add1(x int, y int) int { //足し算関数
	return x + y
}

func Add2(x, y int) int { //引数の型が同じなら,こんな感じで省略できる
	return x + y
}         

func Add3(x, y int) (ret int) { // 戻り値を変数として宣言できる
	ret = x + y
	return
}

/*
	入れ替え関数
*/
func Swap1(x int, y int) (int, int) { //引数x,yの入れ替え関数
	return y, x
}

func Swap2(x, y int) (int, int) { //引数の型が同じなら,こんな感じで省略できる
	return y, x
}
func Swap3(x int, y int) (ret1, ret2 int) { // 戻り値を変数として宣言できる
	ret1 = y
	ret2 = x
	return
}

足し算関数

main関数の中身は,

	/*
		戻り値が1つの関数
	*/
	var ret int // 整数型の変数を宣言
	ret = Add1(1, 2)
	fmt.Println("ret = ", ret)
	ret = Add2(1, 2)
	fmt.Println("ret = ", ret)
	ret = Add3(1, 2)
	fmt.Println("ret = ", ret)

こんな感じで,Add1,Add2,Add3という名前の関数が呼び出されています.名前からわかるように,各関数は,二つの引数(ここでは,1と2)を足した結果を戻り値として返します.

つまり,
  戻り値 = 関数名(引数1,引数2,...)
という構文です.(まー,他の言語と変わらないですね!)

次に,関数の定義部分を見ていきましょう('ω')

/*
	足し算関数
*/
func Add1(x int, y int) int { //足し算関数
	return x + y
}

func Add2(x, y int) int { //引数の型が同じなら,こんな感じで省略できる
	return x + y
}         

func Add3(x, y int) (ret int) { // 戻り値を変数として宣言できる
	ret = x + y
	return
}

Add1を見ると,「func」のあとに関数名「Add1」が来て,
引数部分「(x int , y int)」となり,
なんとなんと,
 戻り値の型「int」が最後に来ます!
Go言語,独特の書き方ですねぇ~(^^)

Add2は,引数部分が
 「(x, y int)」
のように省略できることを教えてくれます!

Add3は,戻り値の部分が
 「(ret int)」
のように書けます!と教えてくれてます!
ここで,宣言したretに格納されている値が,戻り値として返されます!

入れ替え関数

main関数の中身は,

	/*
		戻り値が複数の関数
	*/
	x, y := Swap1(1, 2)
	fmt.Println("x,y = ", x, ",", y)
	x, y = Swap2(x, y)
	fmt.Println("x,y = ", x, ",", y)
	x, y = Swap3(x, y)
	fmt.Println("x,y = ", x, ",", y)

こんな感じで,Swap1,Swap2,Swap3という名前の関数が呼び出されています.名前からわかるように,各関数は,二つの引数の順序を入れ替えて,戻り値として返します.

C言語とは違い,複数の戻り値を返すことができるんです(*´ω`*)

次に,関数の定義部分は下記の通りです.

/*
	入れ替え関数
*/
func Swap1(x int, y int) (int, int) { //引数x,yの入れ替え関数
	return y, x
}

func Swap2(x, y int) (int, int) { //引数の型が同じなら,こんな感じで省略できる
	return y, x
}
func Swap3(x int, y int) (ret1, ret2 int) { // 戻り値を変数として宣言できる
	ret1 = y
	ret2 = x
	return
}

Add関数の説明と同じく,Swap2は引数部分の型の省略,Swap3は,戻り値に変数を宣言しています.

まとめ

どうでしたか?
Goの関数がどんな感じか理解できたでしょうか?

他のプログラミング言語と違い,複数の戻り値を返せるなんて,直観的でわかり易いですよね?

自分が初めてプログラミング言語(C言語)を学習していた時,
「なんで,戻り値は一つだけなんだよッ!(; ・`д・´)」って感じで,泣く泣くポインタの勉強をしたのを覚えていますw

おまけ(The Go Playground

ちなみに,説明用に記載したコード全文をGoの公式Webサイト

The Go Playground : https://play.golang.org/

にコピー&ペーストして,サイト内の「Run」を実行すれば,
 Goの実行環境がなくても
実行結果が出力されます!(Google先生すげー)

それでは,無料の皆さんは,次回で会いましょう('ω')ノ

ここから先は

868字 / 3画像
500円で,本マガジンのすべてを読むことができます.プログラム初心者でもGO言語を習得できるように丁寧な説明を心がけています.もちろん,購読できない方にも,Goの魅力を伝えていきます!

基本的にGoの公式サイトをわかり易く解説していきます.本マガジンは500円です.購入すれば,本マガジン内の全記事がストレスなく読めます!

期間限定 PayPay支払いすると抽選でお得に!

サポートお願いいたします.主に初心者から中級向けに,ソフトウェア開発に関する知識を提供していきます.