ホームページ >バックエンド開発 >Golang >Golang関数の関数パラメータと戻り値における複数の参照

Golang関数の関数パラメータと戻り値における複数の参照

WBOY
WBOYオリジナル
2023-05-17 09:40:351225ブラウズ

Golang は、関数型プログラミングをサポートする強力に型指定された静的言語で、プログラムの動作効率を向上させ、開発と保守を容易にするように設計されています。 Golang では、関数は複数のパラメーターと戻り値を持つことができ、これらのパラメーターと戻り値は異なる型または参照型にすることができます。この記事では、Golang関数の関数パラメータと戻り値における複数の参照について紹介します。

Golang では、関数に複数のパラメーターと戻り値を含めることができるため、開発者はデータを柔軟に組み合わせて渡すことができます。関数のパラメータのうち、参照型のパラメータが複数ある場合、それらの参照はアドレスの形式で関数に渡されます。関数の戻り値において、複数の戻り値が参照型の場合、それらの参照はポインタの形式で関数の外部に返されます。

次は、Golang の関数の複数のパラメーターと戻り値を示す例です。

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

func main() {
    sum, sub, mul := add(3, 2)
    fmt.Printf("sum = %d, sub = %d, mul = %d
", sum, sub, mul)
}

上記のコードでは、add 関数には 2 つの # があります。 ## int 型のパラメータと int 型の 3 つの戻り値。 main 関数では、add 関数によって返された 3 つのパラメーターを、代入ステートメントを通じてそれぞれ sumsub、および ## に保存します。 . #mul 変数を使用して出力を出力します。 Golang では、基本型に加えて、ポインタ型やスライス型などの複合型も提供します。関数のパラメータや戻り値のうち、複合型であるパラメータや戻り値が複数ある場合、それらの複合型は参照型または値型になります。参照型の場合、ポインターとして渡されるか返されます。つまり、関数の内部または外部で元のデータを変更できることを意味します。値型の場合はコピーされ、関数の内部または外部で元のデータのコピーが変更されます。

以下は、Golang で複数のパラメーターの複合型と関数の戻り値を示す例です。

func modify(arr []int, ptr *int) ([]int, *int, int) {
    arr[0] = arr[0] * 2
    *ptr = *ptr * 2
    return arr, ptr, len(arr)
}

func main() {
    arr := []int{1, 2, 3}
    ptr := new(int)
    *ptr = 4
    resArr, resPtr, resLen := modify(arr, ptr)
    fmt.Printf("resArr = %v, resPtr = %d, resLen = %d
", resArr, *resPtr, resLen)
    fmt.Printf("arr = %v, ptr = %d
", arr, *ptr)
}

上記のコードでは、

modify

関数にスライス型パラメータとポインタ型パラメータ、スライス型戻り値、ポインタ型戻り値、整数戻り値。 modify 関数内では、まずスライスの最初の要素を 2 倍し、次にポインタが指す値を 2 倍し、最後に変更されたスライス、ポインタ、スラ​​イスの長さを次のように返します。戻り値 関数の外に戻ります。

main

関数では、スライス arr とポインター ptr を作成し、arr## の最初の値を設定します。 # 要素を 1 に初期化し、ptr が指す値を 4 に初期化してから、modify 関数を呼び出し、戻り値を resArr に格納します。 # # それぞれ #resPtr 変数と resLen 変数。最後に、resArrresPtrresLen、および arrptr# の値を出力します。 # コンソールに # 値。結果から、arr の最初の要素が 2 に変更され、ptr の値が 8 に変更されていることがわかります。これは、modify 関数は内部で変更され、その値は変更されます。 つまり、Golang では、関数は複数のパラメーターと戻り値を持つことができ、これらのパラメーターと戻り値は異なる型にすることができ、参照型または値型にすることができます。参照型の場合、ポインターとして渡されるか返されるため、関数の内部または外部で元のデータを変更できます。値型の場合はコピーされますが、元のデータには影響しません。関数の複数のパラメーターと戻り値に習熟していれば、効率的で柔軟で保守が容易な Golang 関数を作成するのに非常に役立ちます。

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

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