golang 使用值传递还是引用传递?

package main

func pass_by_var(a int) {
	a++
}

func pass_by_ref(a *int) {
	*a++
}
func main() {
	a := 3

	pass_by_var(a)//值拷贝
	println("pass_by_var", a)//3
	pass_by_ref(&a)//值引用
	println("pass_by_ref", a)//4
}

Java 和Python 来说除了自建类型其他都是引用传递

交换两个变量的值

//不推荐写法
func swap(c, b *int) {
	*c, *b = *b, *c
}
//推荐
func swap2(c, b int) (int, int) {
	return b, c
}
func main() {
	c := 50
	b := 100
	swap(&c, &b)
	fmt.Println(c, b) //100 50
}