English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基礎チュートリアル

Golang 制御文

Golang 関数 & メソッド

Golang 構造体

Golang スライス & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 并行処理

Golang エラ(Error)

Golang その他の雑多な事項

Go 言語の関数

関数は、プログラム内のコードや文のブロックで、同じコードを再利用し、最終的にはメモリの節約、時間の節約だけでなく、より良いコードの可読性を提供することができます。したがって、基本的には、関数は特定のタスクを実行し、結果を呼び出し元に返す特定の文の集合です。関数は、何も返さない特定のタスクを実行することもできます。

関数宣言

関数宣言は、構造関数を作成する方法の一つです。

文法:

func function_name(Parameter_list)(Return_type){
    // function body.....
}

その関数の宣言には以下が含まれます:

  • func:それはGo言語のキーワードで、関数の作成に使用されます。

  • function_name:それは関数の名称。

  • Parameter_list:関数の引数の名前とタイプを含みます。

  • Return_type:これはオプションであり、関数が返す値のタイプを含みます。関数内でreturn_typeを使用する場合、関数内でreturn文を使用する必要があります。

関数呼び出し

関数呼び出しは、ユーザーが関数の機能を使用したい場合に完了されます。関数の機能を使用するには、関数を呼び出す必要があります。以下の例のように、add()という名前の関数があり、2つの引数があります。現在、2つの引数を持つarea()を呼び出しています。12、10)をメイン関数内で呼び出します。

package main
import "fmt"
//area()は長方形の面積を検索するために使用されます
//関数の2つの引数、すなわち長さと幅
func area(length, width int) int {
    Ar := length * width
    return Ar
}
func main() {
    //長方形の面積を表示
    //メソッド呼び出し
    fmt.Printf("長方形の面積 : %d", area(12, 10))
}

出力:

長方形の面積 : 120

関数引数

Go言語では、関数に渡される引数は実際の引数(実引数)と呼ばれ、関数が受け取る引数は形式引数(仮引数)と呼ばれます。

注意:デフォルトでは、Go言語は関数に引数を渡す際に値渡し方法を使用します。

Go言語は関数に引数を渡すために2つの方法をサポートしています:

  1. 値渡し:この引数渡し方法では、実際の引数の値が関数の形式引数にコピーされます。したがって、異なるストレージ位置にそれぞれの種類の引数が格納されます。したがって、関数内で行われる任何変更は実際の引数に反映されません。

    package main 
       
    import "fmt"
       
    // 値を交換する関数
    func swap(a, b int) int{ 
      
        var o int
        o = a 
        a = b 
        b = o 
         
       return o  
    } 
       
    func main() { 
     var p int = 10 
     var q int = 20 
      fmt.Printf("p = %d と q = %d", p, q) 
       
     // 値渡し 
     swap(p, q) 
       fmt.Printf("\np = %d と q = %d", p, q) 
    }

    出力:

    p = 10 和 q = 20
    p = 10 和 q = 20
  2. 参照呼び出し:実際の引数と形式引数は同じ場所を指しているため、関数内で行われる任何変更は実際の引数に実際に反映されます。

    package main
    import "fmt"
    //値を交換する関数
    func swap(a, b *int) int {
        var o int
        o = *a
        *a = *b
        *b = o
        return o
    }
    func main() {
        var p int = 10
        var q int = 20
        fmt.Printf("p = %d と q = %d", p, q)
        //参照呼び出し
        swap(&p, &q)
        fmt.Printf("\np = %d と q = %d", p, q)
    }

    出力:

    p = 10 和 q = 20
    p = 20 と q = 10