40 lines
1.3 KiB
Markdown
40 lines
1.3 KiB
Markdown
---
|
|
title: Go Pointers
|
|
---
|
|
## Go Pointers
|
|
|
|
This is a stub. [Help our community expand it](https://github.com/freecodecamp/guides/tree/master/src/pages/go/go-pointers/index.md).
|
|
|
|
[This quick style guide will help ensure your pull request gets accepted](https://github.com/freecodecamp/guides/blob/master/README.md).
|
|
|
|
<!-- The article goes here, in GitHub-flavored Markdown. Feel free to add YouTube videos, images, and CodePen/JSBin embeds -->
|
|
|
|
Pointers
|
|
|
|
Go has pointers. A pointer holds the memory address of a value.
|
|
|
|
The type *T is a pointer to a T value. Its zero value is nil.
|
|
|
|
var p *int
|
|
|
|
The & operator generates a pointer to its operand.
|
|
|
|
i := 42
|
|
p = &i
|
|
|
|
The * operator denotes the pointer's underlying value.
|
|
|
|
fmt.Println(*p) // read i through the pointer p
|
|
*p = 21 // set i through the pointer p
|
|
|
|
This is known as "dereferencing" or "indirecting".
|
|
|
|
Unlike C, Go has no pointer arithmetic.
|
|
|
|
#### More Information:
|
|
<!-- Please add any articles you think might be helpful to read before writing the article -->
|
|
* [A Tour of Go](https://tour.golang.org/moretypes/1)
|
|
* [Go By Example](https://gobyexample.com/pointers)
|
|
* [Golang Book](https://www.golang-book.com/books/intro/8)
|
|
* [The Go Programming Language Specification](https://golang.org/ref/spec#Address_operators)
|