go-函数

Scroll Down

函数

引用传递和值传递

引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
引用传递指针参数传递到函数内

package main

import "fmt"

func main() {
	valChange()
	fmt.Println("==============================")
	refChange()
}

/* 引用传递值 */
func refChange(){
	var a, b int = 100,200
	fmt.Println(a)
	fmt.Println(b)
	/* &a 指向a指针,a变量的地址 */
	swapRef(&a,&b)
	fmt.Println(a)
	fmt.Println(b)
}

func swapRef(x *int, y *int){
	var temp int
   	temp = *x    /* 保持x地址上的值 */
   	*x = *y      /* 将y值赋给 x */
   	*y = temp    /* 将temp值赋给 y */
}


/* 值传递 */
func valChange(){
	var a, b int = 100,200
	fmt.Println(a)
	fmt.Println(b)
	swap(a,b)
	fmt.Println(a)
	fmt.Println(b)
}

func swap(x, y int){
	var temp int
	temp = x
	x = y
	y = temp
}