Go-functions

提供:Dev Guides
移動先:案内検索

Go-機能

関数は、一緒にタスクを実行するステートメントのグループです。 すべてのGoプログラムには、少なくとも1つの関数* main()*があります。 コードを個別の機能に分割できます。 コードを異なる関数に分割する方法はユーザー次第ですが、論理的には、各関数が特定のタスクを実行するように分割する必要があります。

関数*宣言*は、関数名、戻り値の型、およびパラメーターについてコンパイラーに通知します。 関数 definition は、関数の実際の本体を提供します。

Go標準ライブラリは、プログラムが呼び出すことができる多数の組み込み関数を提供します。 たとえば、関数* len()*はさまざまな型の引数を取り、型の長さを返します。 文字列が渡された場合、関数は文字列の長さをバイト単位で返します。 配列が渡された場合、関数は配列の長さを返します。

関数は、 method、subroutine 、または procedure とも呼ばれます。

関数を定義する

Goプログラミング言語の関数定義の一般的な形式は次のとおりです-

func function_name( [parameter list] ) [return_types]
{
   body of the function
}

Goプログラミング言語の関数定義は、_function header_と_function body_で構成されています。 ここに関数のすべての部分があります-

  • Func -関数の宣言を開始します。
  • 関数名-関数の実際の名前です。 関数名とパラメーターリストは一緒に関数シグネチャを構成します。
  • パラメータ-パラメータはプレースホルダのようなものです。 関数が呼び出されると、パラメーターに値を渡します。 この値は、実パラメーターまたは引数と呼ばれます。 パラメーターリストは、関数のパラメーターのタイプ、順序、および数を参照します。 パラメーターはオプションです。つまり、関数にパラメーターを含めることはできません。
  • 戻り値の型-関数は値のリストを返す場合があります。 return_typesは、関数が返す値のデータ型のリストです。 一部の関数は、値を返さずに目的の操作を実行します。 この場合、return_typeは不要です。
  • 関数本体-関数の動作を定義するステートメントのコレクションが含まれています。

次のソースコードは、* max()*という関数を示しています。 この関数は2つのパラメータnum1とnum2を取り、2つの間の最大値を返します-

/*function returning the max between two numbers*/
func max(num1, num2 int) int {
  /*local variable declaration*/
   result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result
}

関数を呼び出す

Go関数を作成するときに、関数の機能の定義を指定します。 関数を使用するには、その関数を呼び出して定義済みのタスクを実行する必要があります。

プログラムが関数を呼び出すと、プログラム制御は呼び出された関数に転送されます。 呼び出された関数は定義されたタスクを実行し、returnステートメントが実行されるか、関数終了の閉じ中括弧に到達すると、プログラム制御をメインプログラムに戻します。

関数を呼び出すには、必要なパラメーターとその関数名を渡すだけです。 関数が値を返す場合、戻り値を保存できます。 たとえば-

package main

import "fmt"

func main() {
  /*local variable definition*/
   var a int = 100
   var b int = 200
   var ret int

  /*calling a function to get max value*/
   ret = max(a, b)

   fmt.Printf( "Max value is : %d\n", ret )
}

/*function returning the max between two numbers*/
func max(num1, num2 int) int {
  /*local variable declaration*/
   var result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result
}

main()関数とともにmax()関数を保持し、ソースコードをコンパイルしました。 最終的な実行可能ファイルを実行している間、それは次の結果を生成します-

Max value is : 200

Functionから複数の値を返す

Go関数は複数の値を返すことができます。 たとえば-

package main

import "fmt"

func swap(x, y string) (string, string) {
   return y, x
}
func main() {
   a, b := swap("Mahesh", "Kumar")
   fmt.Println(a, b)
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Kumar Mahesh

関数の引数

関数が引数を使用する場合、引数の値を受け入れる変数を宣言する必要があります。 これらの変数は、関数の*仮パラメータ*と呼ばれます。

仮パラメータは、関数内の他のローカル変数のように動作し、関数に入ると作成され、終了すると破棄されます。

関数を呼び出している間、引数を関数に渡すことができる2つの方法があります-

Sr.No Call Type & Description
1

Call by value

このメソッドは、引数の実際の値を関数の仮パラメーターにコピーします。 この場合、関数内のパラメーターを変更しても、引数には影響しません。

2

Call by reference

このメソッドは、引数のアドレスを仮パラメーターにコピーします。 関数内では、呼び出しで使用される実際の引数にアクセスするためにアドレスが使用されます。 これは、パラメーターに加えられた変更が引数に影響することを意味します。

デフォルトでは、Goは値渡しを使用して引数を渡します。 一般に、関数内のコードは、関数の呼び出しに使用される引数を変更できないことを意味します。 上記のプログラムは、max()関数を呼び出している間、同じメソッドを使用しました。

関数の使用法

関数は次の方法で使用できます。

Sr.No Function Usage & Description
1

Function as Value

関数はその場で作成でき、値として使用できます。

2

Function Closures

関数クロージャーは匿名関数であり、動的プログラミングで使用できます。

3

Method

メソッドは、レシーバーを備えた特別な機能です。