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

2018年9月2日GoA Tour of Go,Goのお勉強,Go言語,サブルーチン,ファンクション,関数Go,A Tour of Go,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言語のお勉強」インデックス

このシリーズについて

「A Tour of Go」を題材にした記事は現在書き直し中…。_(:3」∠)_
ほとんどサボりが原因で尻切れとなっていたシリーズですが、最近になってようやく続きを書きたくなり再開をしようと思ったんです。が、古い記事を見返すとデータ・フォーマットが古かったり内容が分かり難かったりに気づきまして、、、この際だからと最初の記事から書き直しをすることになりました…