ホームページ > バックエンド開発 > Golang > golang関数の使い方

golang関数の使い方

王林
リリース: 2023-05-14 18:59:35
オリジナル
543 人が閲覧しました

Golang は、効率的なパフォーマンスと簡潔なコードで知られるプログラミング言語であり、その関数の使用も非常に柔軟で便利です。この記事では、Golang 関数のさまざまな使用法を詳しく説明します。

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

Golang では、関数の定義にはキーワード "func" が使用され、その基本的な構文は次のとおりです。それら、関数 名前は関数を識別するために使用され、関数本体内で呼び出されます。パラメーター リストは、関数に入力するパラメーターを指定します。パラメーターは 0 個以上にすることができます。戻り値リストは、関数の戻り値のタイプを指定します。値は 0 またはそれ以上です。

次は、パラメータも戻り値も持たない関数を定義する方法を示す簡単な例です。

func 函数名(参数列表) 返回值列表 {
    // 函数体
}
ログイン後にコピー

関数を呼び出すには、たとえば、関数名と括弧を使用できます。 :

func greet() {
    fmt.Println("Hello, Golang!")
}
ログイン後にコピー

関数のパラメータと戻り値
  1. Golangでは、整数、文字列、構造体、関数など、さまざまな種類のパラメータと戻り値を使用できます。

2.1 パラメータ

Golang 関数のパラメータには次の 2 つのタイプがあります:

2.1.1. 値のタイプ

最も単純なものパラメータの受け渡しの形式は値の受け渡しです。簡単に言えば、関数に変数の値を渡すことです。

たとえば、次のコードは、整数型および文字列型のパラメーターを渡す方法を示しています:

greet()
ログイン後にコピー

2.1.2. 参照型

参照型パラメーターには、ポインターを介してアクセスできます。パラメータの値を関数内で変更できるようにします。例:

func printNum(num int) {
    fmt.Println("number is:", num)
}

func printStr(str string) {
    fmt.Println("string is:", str)
}

func main() {
    num := 123
    str := "Golang"

    printNum(num)
    printStr(str)
}
ログイン後にコピー

2.2 戻り値

Golang の関数は複数の戻り値をサポートしており、次の 2 つの方法で処理できます。 :

2.2.1. 単一の戻り値

##関数は 1 つの値のみを返すことができ、戻り値の型順序は関数名の後の括弧内に置かれます (例: ##)。 #
func addOne(x *int) {
    *x += 1
}

func main() {
    num := 0
    addOne(&num)
    fmt.Println(num) //输出1
}
ログイン後にコピー

2.2 .2. 複数の戻り値

関数は複数の値を返すこともできます。例:

func add(x int, y int) int {
    return x + y
}

func main() {
    sum := add(1, 2)
    fmt.Println(sum)
}
ログイン後にコピー

匿名関数

    Golang は、クロージャまたはパラメータとして渡される場合に匿名関数をサポートしており、関数内で定義できます。例:
  1. func swap(x, y string) (string, string) {
        return y, x
    }
    
    func main() {
        a, b := swap("hello", "world")
        fmt.Println(a, b)
    }
    ログイン後にコピー
  2. この例では、匿名関数を定義し、即時呼び出しを行います。

関数の型を定義する

    Golang では、関数も型であり、関数の型を定義することで関数を宣言できます。例:
  1. func main() {
        values := []int{1, 2, 3, 4}
        sum := 0
        for _, v := range values {
            sum += v
        }
        fmt.Println("sum:", sum)
    
        func() {
            fmt.Println("Anonymous function called")
        }()
    }
    ログイン後にコピー
  2. 上の例では、文字列パラメーターを受け入れ、文字列を返す関数タイプ「greetingFunc」を定義しました。関数のタイプを定義した後、そのタイプを使用して関数「greet」を定義し、その関数を変数「g」に割り当てることができます。最後に、関数名を「g」にして呼び出すと、「greet」関数に渡されて処理されます。

メソッド

    メソッドは、特定の型に対して定義され、その型のインスタンスで実行できる関数です。これらはデータと操作をカプセル化する方法であり、オブジェクト指向プログラミングで特定の動作を実装するために使用できます。
  1. メソッドを定義するには、次の要件を満たす必要があります。

メソッドにはレシーバーが必要です。このレシーバーは、メソッドが呼び出されたときにこの型のインスタンスの値をメソッドに渡し、メソッドの操作とデータ アクセスに使用されます。

受信側は値またはポインターになります。レシーバーが値の場合、メソッドの実行中に値を変更しても、元の値には影響しません。レシーバーがポインターの場合、メソッドの実行中にポインター オブジェクトを変更すると、元のオブジェクトに影響します。
  1. 以下は簡単なメソッドの例です:
  2. type greetingFunc func(string) string
    
    func greet(name string) string {
        return "Hello, " + name
    }
    
    func main() {
        var g greetingFunc = greet
        fmt.Println(g("Golang"))
    }
    ログイン後にコピー
  3. この例では、「Rectangle」タイプを定義し、このタイプの「area」メソッドを定義します。メソッド レシーバーは「Rectangle」型で、この型のインスタンスの面積を返します。

defer 関数

    defer 関数は Golang の特殊な関数で、周辺関数の実行後に実行されます。これは、関数の実行後にクリーンアップが必要なシナリオに役立ちます。
  1. たとえば、次の例は、defer 関数を使用してファイル ハンドルを閉じる方法を示しています。
type Rectangle struct {
    width  int
    height int
}

func (r Rectangle) area() int {
    return r.width * r.height
}

func main() {
    r := Rectangle{width: 10, height: 5}
    fmt.Println("Area:", r.area())
}
ログイン後にコピー

上の例では、「file.txt」という名前のファイルを開いて保存します。変数「ファイル」に。 defer 関数を使用して、関数の完了後にファイルを自動的に閉じることに注目してください。 defer関数は周辺機能の実行後に実行されるため、ファイルを開いた後すぐに使用できます。

この記事では、Golang関数の基本的な使い方と機能について詳しく紹介しました。関数は Golang 言語の中核コンポーネントの 1 つであり、関数はより優れたコード構造と構成を提供するため、作業をより効率的に完了できます。

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

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