A Tour of Go をやる! – その5 「Functions」 これは機能です。 【Go言語/A Tour of Go】
2018年9月2日GoA Tour of Go,Goのお勉強,Go言語,サブルーチン,ファンクション,関数Go,Goのお勉強,Go言語,サブルーチン,ファンクション,関数

「A Tour of Go をやる!」シリーズの第5回目。
何時も通り低クオリティ記事を量産していきます…。
でもって、今回の内容は「Functinos」です。
お題は「Functions(ファンクション/関数)」
今回進めるページはこちら。
「Functions」とは?
ファンクション、関数、メソッド、等々。似たような意味を持つ言葉がありますが、サブルーチンのこと。
では、サブルーチンとは?
プログラム中で意味や内容がまとまっている作業をひとつの手続きとしたものである。
https://ja.wikipedia.org/wiki/サブルーチン
例えば…
// ジュースを買ってこさせるファンクションの定義
function ジュース買ってこいよ (お金, ジュースの銘柄) {
// ジュースをかってこさせるファンクションの処理内容
自販機まで移動
お金を入れる (お金)
ボタンを押す (ジュースの銘柄)
ジュースを取る
依頼主の所へ戻る
return (ジュース)
}
みたいな?
[お金] と [ジュースの銘柄] を「ジュースをかってこいよ」ファンクションに渡して呼べば、ファンクションの結果として ジュース が返ってくるよ…的な考え方。(…この場合、Package は「パシ○」か?)
パラメータと引数
ファンクションが要求する値の定義がパラメータ。
先程の「ジュースをかってこいよ」で言うと、[お金] と [ジュースの銘柄] のこと。
ファンクションに渡す値は引数(Argument)。
先程の「ジュースをかってこいよ」で言うと、[お金] と [ジュースの銘柄] として渡す値、例えば [160円] 、 [コカコーラ] 等 が引数。
戻り値
ファンクションが返却する値が戻り値(返り値、リターン値 等)。
先程の「ジュースをかってこいよ」で言うと、[ジュース] のこと。
ファンクションの言語仕様
ファンクションの言語仕様はこちら。
サンプルプログラムを見てみる
何時も通りコメントを追記しています。
ここで見るべきなのは add ファンクション。
定義と呼び出し部分を詳しく見てみます。
ファンクションの定義
add ファンクション定義は次の部分。
func add(x int, y int) int { ... }
ざっくり説明すると…
ファンクション名は add で~、引数は int型の2つの値が必要で~~、戻り値は int型 で返すよ~~~。
ということが読み取れます。
それだけだと「なんのこっちゃ?」になりそうなので、ファンクションの書式はこちら。
func <ファンクション名> ( <パラメータ> ) <戻り値の型> {
~処理~
}
- <ファンクション名>
ファンクションの名前。(なんか日本語名でも動いた…) - <パラメータ>
ファンクションが受け取れる値の定義。 - <戻り値の型>
ファンクションが返す戻り値の型。
ファンクションの処理内容
add ファンクションの処理は次の部分。
func add(x int, y int) int {
// {} の中が add ファンクションの処理内容
return x + y
}
一応処理の内容を説明してみると…
引数として受け取った x と y の値を加算し、戻り値として返却するよ~。
ってことをしている。
※ return している値や変数が戻り値。
ファンクションの呼び出し(実行)
add ファンクションの呼び出し(実行)は次の部分。
// add ファンクションの呼び出し(実行)
fmt.Println( add(42, 13) )
// ^^^^^^^^^^^ ←ここね
ざっくり説明すると、add ファンクションのパラメータに従い…
42 と 13 という値を引数として渡すよ~、戻り値はダイレクトに Println の引数とするよ~~。
ってことをしている。
ファンクションを呼び出す書式はこちら。
<戻り値> = <ファンクション名> ( <引数>, <引数>, ...)
- <ファンクション名>
呼び出す(実行する)ファンクションの名前 - <引数>
ファンクションに渡す値。リテラル値(直接的な数値や文字列)や変数を指定でき、複数ある場合はカンマ区切り。 - <戻り値>
ファンクションから返却される値。
さいごに
ファンクションに関してはこんな感じでした。
使い方の雰囲気としてはその他のプログラミング言語を比べて極端な差はないですが、戻り値を複数扱える点は Go の特徴になるようです。
といったところで、また次回~ ٩( 'ω’ )و
「Go言語のお勉強」インデックス
- うっしー「Go言語」に手を出す…(準備編)
- 「A Tour of Go」をやる!
- その1 「Hello, 世界」
- その2 「Packages」だってさ~
- その3 「Imports」いんぽーっ!
- その4 「Exported names」見えますか?
- その5 「Functions」 これは機能です。
- その6 「Functions continued」(?) 型しょ~略っ!
- その7 「Multiple results」 一粒で二度美味しい?
- その8 「Named return values」 お前は戻り値だ…
- その9 「Variables」入れ物!
- その10 「Variables with initializers」砂でも詰めるか…
- その11 「Short variable declarations」 略パート2!
- その12 「Basic types」 型抜きってあったな…
- その13 「Zero values」 生まれ持った中身は?
- その14 「Type conversions」 1は1.0になれる!
- その15 「Type inference」 君の型は…?
- その16 「Constants」 変えられねぇよ?
- その17 「Numeric Constants」 型無し野郎?
- その18 「For」 ~いよいよループ!~
- その19 「For continued」 ~ Forの続き! ~
「A Tour of Go」を題材にした記事は現在書き直し中…。_(:3」∠)_
ほとんどサボりが原因で尻切れとなっていたシリーズですが、最近になってようやく続きを書きたくなり再開をしようと思ったんです。が、古い記事を見返すとデータ・フォーマットが古かったり内容が分かり難かったりに気づきまして、、、この際だからと最初の記事から書き直しをすることになりました…
関連記事

A Tour of Go をやる! – その7 「Multiple results」 一粒で二度美味しい? 【Go言語/A Tour of Go】
「A Tour of Go をやる!」シリーズの第7回目。 前々回から引き続きに ...

A Tour of Go をやる! – その4 「Exported names」見えますか? 【Go言語/A Tour of Go】
「A Tour of Go をやる!」シリーズの第4回目。 何時も通り「A To ...

A Tour of Go をやる! – その15 「Type inference」 君の型は…?【Go言語/A Tour of Go】
「A Tour of Go をやる!」シリーズの第15回目。 今回も変数でまたし ...

うっしー「Go言語」に手を出す…(準備編) 【Go言語】
いや~、しばらく更新が断絶してましたが久しぶりに投稿してみます。 今回から、Go ...

【Go言語】構造体のポインタだったり初期化だったり… – Structs 2
たいしたこと書いてない割には超亀進行なこのシリーズ…。そんなまったり進行なGo言 ...
ディスカッション
コメント一覧
まだ、コメントがありません