ホームページ > バックエンド開発 > Golang > golang関数の使い方を詳しく解説

golang関数の使い方を詳しく解説

PHPz
リリース: 2023-03-30 09:28:28
オリジナル
687 人が閲覧しました

Go 言語は Google が開発した新しいプログラミング言語で、シンプル、効率的、学習しやすく、同時プログラミングに適しています。 Go言語において関数は非常に重要なプログラミング要素ですので、この記事ではgolang関数の使い方を紹介します。

1. 関数の定義と呼び出し

Go言語における関数の定義は次のとおりです:

func function_name(parameter_list) (result_list) {
    // 函数代码
}
ログイン後にコピー

このうち、関数名は関数名;parameter_list はパラメータのリストであり、複数のパラメータはカンマで区切られます; result_list は関数の戻り値のリストであり、複数の戻り値はカンマで区切られます; { } 内部には、関数が実行されるコード ブロックがあります。

関数呼び出しの構文は次のとおりです。

function_name(parameter_list)
ログイン後にコピー

たとえば、単純な関数 sum が以下に定義されており、これは int# 型の 2 つのパラメーターを受け取ります。 ## 、合計を返します:

func sum(a int, b int) int {
    return a + b
}
ログイン後にコピー

sum 関数を呼び出す方法は次のとおりです:

x := sum(3, 5)
ログイン後にコピー
上記のコードは値

8# を返します。 ## を変数 x に代入します。 2. 複数の戻り値関数

Go 言語では、関数は複数の値を返すことができます。以下の例に示すように、関数

more_return

は 2 つの文字列を返します: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">func more_return() (string, string) {     return &quot;hello&quot;, &quot;world&quot; }</pre><div class="contentsignin">ログイン後にコピー</div></div>呼び出しメソッドは次のとおりです:

a, b := more_return()
ログイン後にコピー

上記のコードは 2 つの文字列を返します。変数

a

b に値を代入します。 3. パラメータとしての関数

Go 言語では、関数をパラメータとして別の関数に渡すこともできます。たとえば、次の例は関数をパラメータとして示しています。

func calc(a int, b int, f func(int, int) int) int {
    return f(a, b)
}

func add(a int, b int) int {
    return a + b
}

func main() {
    result := calc(3, 5, add)
    fmt.Println(result)  // 8
}
ログイン後にコピー

上記のコードでは、

calc

関数は 3 つのパラメータを受け取ります: abそして関数 f、その型はそれぞれ intintfunc(int, int) int です。 add 関数は、2 つの数値を加算するために使用される関数であり、func(int, int) int 型の要件を満たします。 main 関数では、calc 関数が呼び出され、35 の加算値が計算されます。 add 関数はパラメータとして calc 関数に渡されます。 4. 関数の再帰呼び出し

Go 言語では、関数はそれ自体を再帰的に呼び出すこともできます。たとえば、次の例は、再帰的に呼び出される関数を示しています。

func fibonacci(n int) int {
    if n < 2 {
        return n
    }
    return fibonacci(n-1) + fibonacci(n-2)
}
ログイン後にコピー
上記のコードでは、

fibonacci

関数はパラメータとして整数

n を受け取り、フィボナッチを返します。そのシーケンス内の n 番目の数値の値。 n が 2 未満の場合、戻り値は n そのものであり、それ以外の場合は、fibonacci 関数が再帰的に呼び出されます。 5. 匿名関数

Go 言語では、関数を匿名関数として定義することもできます。匿名関数は、通常の関数と同様に、値を渡したり、呼び出したり、返したりすることができます。次の例は、並べ替えに匿名関数を使用する方法を示しています。

package main

import "fmt"

func main() {
    a := []int{5, 2, 6, 3, 1, 4}

    // 使用匿名函数进行排序
    sort.Slice(a, func(i, j int) bool {
        return a[i] < a[j]
    })

    fmt.Println(a)  // [1 2 3 4 5 6]
}
ログイン後にコピー
上記のコードでは、標準ライブラリの

sort.Slice

関数を使用してスライスを並べ替えています。匿名関数をパラメータとして渡す必要があります。匿名関数のパラメータ リストは

ij で、スライスの 2 つの要素を表します。戻り値の型は # です。 ##bool、どの要素が小さいかを表します。 6. クロージャクロージャは、関数とそれが参照する外部変数で構成される全体です。 Go 言語では、関数がクロージャになることがあります。クロージャ内の外部変数はクロージャ内で参照されますが、その有効期間はクロージャとは異なり、クロージャの呼び出しが終了した後も存続できます。次の例は、クロージャの使用方法を示しています。

func accumulator() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}

func main() {
    f := accumulator()
    fmt.Println(f(1))  // 1
    fmt.Println(f(2))  // 3
    fmt.Println(f(3))  // 6
}
ログイン後にコピー

上記のコードでは、

accumulator

関数は匿名関数を返し、

sum

変数は匿名関数で参照されます。関数。クロージャ呼び出しが終了した後も、sum 変数はまだ存在し、その値を保持し続けます。 main 関数では、accumulator 関数を呼び出してクロージャ関数 f を取得し、f 関数を複数回呼び出して累積を計算します。そして。 7. 概要Go 言語の関数は非常に重要なプログラミング要素であり、シンプル、効率的、学習しやすく、パラメーターとしての関数、複数の戻り値、および再帰: 呼び出し、匿名関数、クロージャ、その他多くの機能。これらの機能の使用をマスターすると、Go 言語開発作業をより効率的に完了するのに役立ちます。

以上がgolang関数の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート