Go で関数パラメータを渡すには、値渡しと参照渡しの 2 つの方法があります。値渡しではパラメータのコピーが作成され、コピーへの変更は元の値に影響しません。参照渡しではエイリアスが作成され、コピーへの変更は元の値に反映されます。ベスト プラクティスには、変更可能な状態を変更するためのポインター受信関数の使用、同時実行性の高いシナリオでの値の受け渡しの回避、および偶発的な変更を防ぐための定数値の使用が含まれます。
Go で関数パラメーターを渡すための業界のベスト プラクティスとパターン
Go では、関数パラメーターは値または参照によって渡されます。これら 2 つのメカニズムとその影響を理解することは、堅牢で効率的なコードを作成するために重要です。
値による受け渡し
値による受け渡しでは、パラメーターのコピーが作成されます。つまり、コピーに加えられた変更は元の値に影響しません。 func(t int)
を使用して、パラメータとして値を受け入れる関数を宣言します。たとえば、次のようになります。
func square(x int) int { return x * x }
Pass byreference
Pass参照によりパラメータ Aliases が作成されます。これは、コピーに加えられた変更が元の値に反映されることを意味します。 func(t *int)
を使用して、ポインターをパラメーターとして受け入れる関数を宣言します。例:
func increment(p *int) { *p++ }
ベスト プラクティスとパターン
実際的なケース
2 つの整数を交換するために使用される関数 swap()
を考えてみましょう。値渡しでは、元の値を変更せずに 2 つのコピーが作成されます:
func swapByValue(x, y int) { temp := x x = y y = temp } func main() { a := 1 b := 2 swapByValue(a, b) fmt.Println(a, b) // 输出:1 2 }
参照渡しでは、元の値が変更されます:
func swapByReference(x, y *int) { temp := *x *x = *y *y = temp } func main() { a := 1 b := 2 swapByReference(&a, &b) fmt.Println(a, b) // 输出:2 1 }
以上がGolang 関数パラメータ受け渡しに関する業界のベスト プラクティスとパターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。