Home >Backend Development >Golang >How to use golang pointers
Go is a programming language that supports pointers. Pointers are widely used in Go programming because many operations require direct manipulation of memory addresses. Learning how to use pointers correctly can make your code more efficient and help solve problems in certain scenarios.
A pointer is a special variable that stores an address. This address points to the address of another variable stored in memory. In other words, a pointer is the memory address of a variable.
For example:
var a int = 10 var p *int = &a
Here, a
stores an integer value 10
, while p
is a ## A pointer variable of type #int stores the memory address of
a. By
&a taking out the address of
a and storing it to
p, we can access the address stored by
a through
p value.
& before the variable. For example:
var a int = 10 var p *int = &aDereference
*. This converts the pointer variable to the original value pointed to by the pointer. For example:
var a int = 10 var p *int = &a fmt.Println(*p) // 输出:10Pointer arithmetic
and
-
var a [3]int = [3]int{1, 2, 3} var p *int = &a[0] fmt.Println(*p) // 输出:1 p++ fmt.Println(*p) // 输出:2In this example, we define an integer array
a and store the address of its first element in the pointer variable
p. We first print out the value pointed to by
p, then move the pointer to the second element in the array via
p and print out the new pointer value again.
func swap(a, b *int) { temp := *a *a = *b *b = temp } func main() { x, y := 1, 2 swap(&x, &y) fmt.Println(x, y) // 输出:2 1 }In this example, we define a
swap function that accepts two integer pointers as parameters. Inside the function, we dereference the pointer and swap the values of the two variables. When we call the function, we pass the addresses of the two variables to the
swap function, so that the function can directly operate the memory addresses of the two variables.
new function to allocate memory and return the address of the newly allocated memory. For example:
p := new(int) *p = 10 fmt.Println(*p) // 输出:10In this example, we use the
new function to allocate a new
int type of memory space and store the address in
p middle. We then set the value of the newly allocated memory to
10 by
*p = 10. Finally, we use
*p to access the value and print it out.
func add(a, b int) (int, *error) { if a < 0 || b < 0 { err := errors.New("arguments must be non-negative") return 0, &err } return a + b, nil } func main() { result, err := add(1, -2) if err != nil { fmt.Println(err) return } fmt.Println(result) }In this example, we define the
add function to calculate the sum of the input parameters. If either argument is negative, we create an error object and return it as a pointer. In the
main function, we check whether the error pointer is
nil, and if not, print the error message, otherwise print the return value of the function.
The above is the detailed content of How to use golang pointers. For more information, please follow other related articles on the PHP Chinese website!