GoLang 関数のパラメータ受け渡しでは、値渡しメカニズムが採用されています。値型パラメータの変更は実際のパラメータには影響しませんが、参照型パラメータの変更は実際のパラメータに影響を与えます。実際のパラメータ。
GoLang 関数でのパラメーターの受け渡し
はじめに
GoLang でのパラメーターの受け渡し値渡しメカニズムに従います。これは、関数内のパラメーターに加えられた変更は、関数の外側の実際のパラメーターには影響しないことを意味します。
パラメータの型
GoLang 関数のパラメータは、値型または参照型にすることができます。
値型
値型パラメータの場合、関数内のパラメータを変更しても実際のパラメータには影響しません。これは、関数呼び出し中にパラメーターのコピーが作成されるためです。
func swap(a, b int) { a, b = b, a // 在函数内交换 a 和 b 的副本 } func main() { x := 5 y := 7 swap(x, y) fmt.Println(x, y) // 输出 5 7 }
参照型
参照型パラメータの場合、関数内のパラメータを変更すると実際のパラメータに影響します。これは、関数が実際のデータを直接操作するためです。
func swap(a, b []int) { a[0], b[0] = b[0], a[0] // 交换切片的第一个元素 } func main() { x := []int{5} y := []int{7} swap(x, y) fmt.Println(x, y) // 输出 [7] [5] }
Pointer
ポインター型は、値に間接的にアクセスするためのメカニズムを提供します。ポインターを介して参照型を渡す場合、実際のパラメーターを変更できます。
func swap(a, b *int) { *a, *b = *b, *a // 交换指针指向的值 } func main() { x := 5 y := 7 swap(&x, &y) fmt.Println(x, y) // 输出 7 5 }
実際的なケース
関数パラメータの受け渡しを使用した実際的なケースを次に示します:
type Book struct {
以上がgolang関数で渡すパラメータの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。