package main

import "fmt"

// naikkan menambah satu pada nilai yang ditunjuk pointer p.
func naikkan(p *int) {
	*p = *p + 1
}

func main() {
	x := 10
	p := &x // operator & mengambil alamat variable x
	fmt.Println("nilai x  :", x)
	fmt.Println("nilai *p :", *p)

	*p = 25 // operator * menulis ke lokasi yang ditunjuk p
	fmt.Println("nilai x  :", x)

	naikkan(&x) // alamat x dikirim ke fungsi
	fmt.Println("nilai x  :", x)

	var ptr *int // zero value pointer adalah nil
	fmt.Println("ptr nil? :", ptr == nil)
}
