package main

import "fmt"

func swap(a int, b int) (int, int) {
	var tmp int
	tmp = a
	a = b
	b = tmp
	return a, b
}

func swap2(pa *int, pb *int) {
	var temp int
	temp = *pa // temp = main::a
	*pa = *pb  // main::a = main::b
	*pb = temp // main::b = temp
}

func main() {
	var a int = 10
	var b int = 20

	fmt.Println("a = ", a, " b = ", b)

	swap2(&a, &b)

	// a, b = swap(a, b)

	fmt.Println("a = ", a, " b = ", b)

	var p *int
	p = &a
	fmt.Println(&a)
	fmt.Println(p)

	var pp **int
	pp = &p
	fmt.Println(&p)
	fmt.Println(pp)
	fmt.Println(&pp)
}