Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
56 lines (39 sloc) 1.46 KB
/*
Title: 17.Pointers.go
Author: OpenSource
Date: 2017-05-21
Description: For Study
Go supports pointers, allowing you to pass references to values and records within your program.
*/
package main
import "fmt"
// We’ll show how pointers work in contrast to values with 2 functions: zeroval and zeroptr.
// zeroval has an int parameter, so arguments will be passed to it by value.
// zeroval will get a copy of ival distinct from the one in the calling function.
func zeroval (ival int) {
fmt.Println("zeroval")
ival = 0
}
// zeroptr in contrast has an *int parameter, meaning that it takes an int pointer.
// The *iptr code in the function body then
// dereferences the pointer from its memory address to the current value at that address.
// Assigning a value to a dereferenced pointer changes the value at the referenced address.
func zeroptr (iptr *int) {
fmt.Println("zeroptr")
*iptr = 0
}
func main () {
fmt.Println("17.Pointers.go--------Start-----------")
i := 1
fmt.Println("initial => i := 1 ", i)
// zeroval doesn’t change the i in main,
// but zeroptr does because it has a reference to the memory address for that variable.
zeroval(i)
fmt.Println("zeroval(i) =>", i)
// The &i syntax gives the memory address of i, i.e. a pointer to i.
zeroptr(&i)
fmt.Println("zeroptr(i) =>", i)
// Pointers can be printed too.
fmt.Println("&i",&i)
fmt.Println("17.Pointers.go--------Start-----------")
}
You can’t perform that action at this time.