golang関数のパラメータ受け渡し

王林
リリース: 2024-04-20 18:03:01
オリジナル
342 人が閲覧しました

golang関数のパラメータ受け渡し

Go 関数のパラメータ受け渡し

Go では、関数は値または参照によってパラメータを渡します。これら 2 つの配信方法の違いを理解することは、コードのパフォーマンスを最適化し、予期しない動作を回避するために重要です。

値の受け渡し

パラメータが値によって渡されると、関数はパラメータ値のコピーを受け取ります。これは、パラメーター値を変更しても、関数外の元のパラメーターには影響を与えないことを意味します。値による受け渡しは、関数内で値が変更されても元の値が変更されないため、int、float64、string などの不変型の場合に便利です。

コード例:

package main

import "fmt"

func addValue(n int) {
    n++
}

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

参照渡し

パラメータが参照によって渡される場合、関数はパラメータを受け取ります。のアドレス。これは、パラメーター値への変更が関数の外側の元のパラメーターに反映されることを意味します。参照による受け渡しは、関数内の元の値を変更する必要があるため、配列、スライス、マップなどの可変型の場合に便利です。

Go で参照の受け渡しを実装するには、ポインター (*) を使用できます。ポインタは変数のアドレスへの参照です。

コード例:

package main

import "fmt"

func addValuePtr(n *int) {
    *n++
}

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

実践例

次の関数を考えてみましょう。数値の配列:

func sum(nums []int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}
ログイン後にコピー

値渡しを使用してこの関数に配列を渡そうとした場合、関数内の配列要素を変更しても、関数の外側の元の配列には影響しません。代わりに、関数が元の配列にアクセスしてその要素を変更できるように、参照渡しを使用する必要があります。

以上がgolang関数のパラメータ受け渡しの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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