wiki/content/20200828180957-pointers.md

53 lines
958 B
Markdown

---
date: 20200828
id: f2e19e3e-e28a-4998-8b0c-38ebfdb559e5
title: Golang Pointers
---
# Basics
Go also supports pointers. Default value is always NULL and you can't do
pointer arithmetic. Other than that, nothing that will blow your mind
here.
``` go
package main
import "fmt"
func main() {
i, j := 42, 2701
p := &i // point to i
fmt.Println(*p) // read i through the pointer
*p = 21 // set i through the pointer
fmt.Println(i) // see the new value of i
p = &j // point to j
*p = *p / 37 // divide j through the pointer
fmt.Println(j) // see the new value of j
}
```
# Pointers to [Golang Structs](20200828181259-structs)
To facilitate lazy people like me Go allows you to lose the \`\*\` when
using a pointer to a struct
``` go
package main
import "fmt"
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{1, 2}
p := &v
p.X = 123
fmt.Println(v)
}
```