package main

import "fmt"

// This functions creates a copy of the argument and does not change the original
func zeroval(ival int) {
	ival = 0
}

// Changes the value of the argument because it is a pointer.
func zeroptr(iptr *int) {
	*iptr = 0
}

func main() {
	i := 1
	fmt.Println("initial", i)

	zeroval(i)
	fmt.Println("zeroval", i)
	// & operand means the address of the variable. Creates a pointer when a function needs that as argument
	zeroptr(&i)
	fmt.Println("zeroptr:", i)

	fmt.Println("Poiner:", &i)
}
