Home > Article > Backend Development > Similarities and differences between pass-by-value and pass-by-reference in Golang
There are two ways of passing variables in Go language: value passing: passing a copy of the variable, the original variable is not affected. Pass by reference: Pass the address of the variable, and the function can access and modify the original variable.
In Go language, there are two ways to pass variables: value passing and reference passing. Understanding the difference between the two is crucial as it will affect how you behave when writing code.
Passing by value
When a variable is passed by value, a copy of the variable is passed to the function or method. This means that the original variable is not affected by any changes made in the function.
func changeValue(x int) { x = 100 } func main() { a := 5 changeValue(a) fmt.Println(a) // 输出 5,因为原始值没有改变 }
In the example above, the changeValue
function takes an int
with a value of 5 as a parameter. When a modification is made to this parameter, it only modifies the copy, not the original variable.
Passing by Reference
When a variable is passed by reference, the address of the variable is passed to the function or method. This means that the function can access and modify the original variable.
Use pointers to implement reference transfer. Pointer variables store the address of a variable. As shown below:
func changeReference(x *int) { *x = 100 } func main() { a := 5 changeReference(&a) fmt.Println(a) // 输出 100,因为原始值被修改 }
In this example, the changeReference
function accepts a pointer to an integer as a parameter. When the function modifies *x
, it actually modifies the address pointing to the a
variable, thereby modifying the original value of a
.
Summary
The above is the detailed content of Similarities and differences between pass-by-value and pass-by-reference in Golang. For more information, please follow other related articles on the PHP Chinese website!