---
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)
}
```