ホームページ  >  記事  >  バックエンド開発  >  golangでさまざまなタイプのパラメータを渡す方法

golangでさまざまなタイプのパラメータを渡す方法

PHPz
PHPzオリジナル
2024-04-23 08:36:02446ブラウズ

Go の関数のパラメータ受け渡し方法は、1) 値による受け渡し (基本的な型と構造体)、2) 参照による受け渡し (参照型とポインター)、3) 値による参照による受け渡し (ほとんど使用されません) に分類されます。 。適切な配信方法の選択は、関数のパフォーマンスとセマンティクスに影響します。

golangでさまざまなタイプのパラメータを渡す方法

Go でのさまざまなタイプのパラメータのメソッドの受け渡し

Go では、関数のパラメータをさまざまな方法で渡すことができます。関数がこれらのパラメーターをどのように使用するかに影響します。 Go でさまざまな種類のパラメーターを渡す 3 つの一般的な方法を次に示します。

値による受け渡し

値による受け渡しは、最も簡単な受け渡し方法です。このように、関数は引数のコピーを作成するため、引数を変更しても元の値には影響しません。プリミティブ型 (int、float64、string など) と構造体は値によって渡されます。例:

func inc(n int) {
    // 创建参数 n 的副本
    n++
}

func main() {
    a := 5
    inc(a) // a 的值保持为 5,因为 n 是 a 的副本
    fmt.Println(a) // 输出:5
}

参照渡し

参照渡し ポインターによってパラメーターを渡します。関数はパラメータへのポインタを変更することで、元の値を間接的に変更できます。参照型 (スライス、マップ、関数など) は参照によって渡されます。ポインター (*int など) も参照によって渡されます。例:

func inc(n *int) {
    // n 是指向原始值 a 的指针
    *n++
}

func main() {
    a := 5
    inc(&a) // 修改 a 的值
    fmt.Println(a) // 输出:6
}

値による参照の受け渡し

値による参照の受け渡しは一般的ではありませんが、場合によっては便利な受け渡し方法です。このようにして、関数はパラメーター値へのポインターのコピーを作成します。例:

func incValueRef(val *float64) {
    // val 是指向参数值 f 的指针的副本
    *val++
}

func main() {
    f := 5.0
    incValueRef(&f) // 修改 f 的值
    fmt.Println(f) // 输出:6.0
}

正しい受け渡し方法を選択することは、関数のパフォーマンスとセマンティクスに影響するため重要です。値渡しの方が高速ですが、参照渡しを使用すると関数で元の値を変更できます。参照渡しは、この 2 つの間の妥協点を提供します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。