Pointers in Go code example

Example 1: go pointers

&	address of / create pointer
*	dereference pointer

Example 2: go pointers

p := Vertex{1, 2}  // p is a Vertex
q := &p            // q is a pointer to a Vertex
r := &Vertex{1, 2} // r is also a pointer to a Vertex

// The type of a pointer to a Vertex is *Vertex

var s *Vertex = new(Vertex) // new creates a pointer to a new struct instance

Example 3: go pointers

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
}

Example 4: golang pointer

package main

import "fmt"

type Person struct {
	Firstname string
	Lastname  string
}

func pointerParameter(fullname *string) {
	*fullname = "john doe"
	fmt.Println("passing data with pointer", *fullname)
}

func pointerStructParameter(person *Person) {
	fmt.Println(*person)
}

func pointerStructParameterWithRetruning(person *Person) (pointer interface{}) {
	pointer = *person
	return pointer
}

func main() {
	var fullname string

	realNumber := 5
	pointerNumber := &realNumber
	number := pointerNumber
	person := &Person{
		Firstname: "john doe",
		Lastname:  "margareth",
	}

	var yearsPointer *int
	years := &yearsPointer

	pointerParameter(&fullname)
	pointerStructParameter(person)

	fmt.Println("real number", realNumber)
	fmt.Println("pointer number", pointerNumber)
	fmt.Printf("real number from pointer %v\n", *number)
	fmt.Println("nil pointer", *years)
	fmt.Println("read pointer paramter with returning", pointerStructParameterWithRetruning(person))

}

Tags:

Go Example