why use pointer in go code example

Example 1: 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 2: 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