A Tour of Go をやる! – その5 「Functions」 これは機能です。 【Go言語/A Tour of Go】

2018年9月2日Go言語のお勉強A Tour of Go,function,Goのお勉強,Go言語,サブルーチン,関数Go言語のお勉強,function,Goのお勉強,Go言語,サブルーチン,関数

記事ヘッダー_Functions

「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言語のお勉強 記事一覧

  1. うっしー「Go」に手を出す…
  2. 「A Tour of Go」をやる! シリーズ
    1. その1 「Hello, 世界」
    2. その2 「Packages」だってさ~
    3. その3 「Imports」いんぽーっ!
    4. その4 「Exported names」見えますか?
    5. その5 「Functions」 これは機能です。
    6. その6 「Functions continued」(?) 型しょ~略っ!
    7. その7 「Multiple results」 一粒で二度美味しい?
    8. その8 「Named return values」 お前は戻り値だ…
    9. その9 「Variables」入れ物!
    10. その10 「Variables with initializers」砂でも詰めるか…
    11. その11 「Short variable declarations」 略パート2!
    12. その12 「Basic types」 型抜きってあったな…
    13. その13 「Zero values」 生まれ持った中身は?
    14. その14 「Type conversions」 1は1.0になれる!

「A Tour of Go」記事は現在書き直し中…。_(┐「ε:)_
サボったりサボったり…で尻切れシリーズになっていましたが、最近続きを書く気になりました。が、これまでの記事を改めて見返すと記事のデータ・フォーマットが古く、この際だからと最初の記事から書き直しております。