Go言語の機能


関数は、タスクを実行するコードの基本ブロックです。

Go言語には少なくともmain()関数があります。

関数を通じてさまざまな関数を分割できます。論理的には、各関数が指定されたタスクを実行します。

関数宣言は、関数の名前、戻り値の型、パラメーターをコンパイラーに伝えます。

Go 言語の標準ライブラリには、使用できるさまざまな組み込み関数が用意されています。たとえば、len() 関数はさまざまな型の引数を受け入れ、その型の長さを返すことができます。文字列を渡すと、文字列の長さが返されます。数値を渡すと、配列に含まれる関数の数が返されます。


関数定義

Go言語の関数定義形式は以下の通りです:

func function_name( [parameter list] ) [return_types] {
   函数体
}

関数定義解析:

  • func: funcから始まる関数を宣言します

  • function_name: 関数名、関数名とパラメータ リストが一緒になって関数シグネチャを構成します。

  • パラメータリスト]:パラメータリスト。パラメータはプレースホルダのようなもので、関数が呼び出されるときに値をパラメータに渡すことができます。この値は実際のパラメータと呼ばれます。パラメーター リストでは、パラメーターのタイプ、順序、およびパラメーターの数を指定します。パラメーターはオプションです。つまり、関数にパラメーターを含めないこともできます。

  • return_types: 戻り値の型。関数は値のリストを返します。 return_types は列値のデータ型です。一部の関数は戻り値を必要としません。その場合、return_types は必要ありません。

  • 関数本体: 関数によって定義されたコードのコレクション。

次の例は、2 つの整数パラメータ num1 と num2 を渡し、これら 2 つのパラメータの最大値を返す max() 関数のコードです。関数が何を行う必要があるかを定義するときは、関数を呼び出して、指定されたタスクを実行します。

関数を呼び出し、その関数にパラメータを渡し、値を返します。例:

/* 函数返回两个数的最大值 */
func max(num1, num2 int) int {
   /* 声明局部变量 */
   var result int

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

上記の例は、main() 関数で max() 関数を呼び出し、実行結果は次のようになります:

package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var a int = 100
   var b int = 200
   var ret int

   /* 调用函数并返回最大值 */
   ret = max(a, b)

   fmt.Printf( "最大值是 : %d\n", ret )
}

/* 函数返回两个数的最大值 */
func max(num1, num2 int) int {
   /* 定义局部变量 */
   var result int

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

関数は複数の値を返します

Go 関数複数の値を返すことができます。例:
最大值是 : 200

上記の例の実行結果は次のとおりです:

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)
}

関数パラメータ

関数がパラメータを使用する場合、変数は関数の仮パラメータと呼ばれます。

仮パラメータは、関数本体で定義されるローカル変数のようなものです。

関数を呼び出すとき、パラメーターは次の 2 つの方法で渡すことができます:

転送タイプ説明値の受け渡し値の受け渡しとは、関数を呼び出すときに、実際のパラメーターのコピーを意味します。が関数に渡されるため、関数内でパラメータが変更されても、実際のパラメータは影響を受けません。 参照渡しとは、関数を呼び出すときに実際のパラメータのアドレスを関数に渡すことを意味し、関数内のパラメータの変更は実際のパラメータに影響します。
参照渡し

デフォルトでは、Go 言語は値の受け渡しを使用します。つまり、実際のパラメーターは呼び出し中に影響を受けません。


関数の使用法

関数の使用法説明
値としての関数関数を定義した後、値として使用できます
クロージャA閉鎖は匿名関数 、動的プログラミングで使用されるメソッドは、レシーバーを含む関数です。