值类型参数传递
package main
import "fmt"
func main(){
a := 10
fmt.Println("fun1()函数调用前a的值:",a)
fun1(a)
fmt.Println("fun1()函数调用后a的值:",a)
fun2(&a)
fmt.Println("fun2()函数调用后a的值:",a)
}
func fun1(num int) {
fmt.Println("fun1()函数中,num的值:",num)
num = 100
fmt.Println("fun1()函数中修改num的值:",num)
}
func fun2(p1 *int) {
fmt.Println("fun2()函数中,p1的值:",p1)
*p1 = 200
fmt.Println("fun2()函数中修改p1的值:",*p1)
}
//结果
fun1()函数调用前a的值: 10
fun1()函数中,num的值: 10
fun1()函数中修改num的值: 100
fun1()函数调用后a的值: 10
fun2()函数中,p1的值: 0xc0000a0068
fun2()函数中修改p1的值: 200
fun2()函数调用后a的值: 200
image.png
数组作为参数
package main
import "fmt"
func main(){
arr1 := [4]int{1,2,3,4}
fmt.Println("fun3()函数调用前arr1的值:",arr1)
fun3(arr1)
fmt.Println("fun3()函数调用后arr1的值:",arr1)
fun4(&arr1)
fmt.Println("fun4()函数调用后arr1的值:",arr1)
}
func fun4(p2 *[4]int){ //引用传递
fmt.Println("fun4()函数中数组指针:",p2)
p2[0] = 200
fmt.Println("fun4()函数中修改后数组指针:",p2)
}
func fun3(arr2 [4]int){ //值传递
fmt.Println("fun3()函数中数组:",arr2)
arr2[0] = 100
fmt.Println("fun3()函数中修改数组:",arr2)
}
//结果
fun3()函数调用前arr1的值: [1 2 3 4]
fun3()函数中数组: [1 2 3 4]
fun3()函数中修改数组: [100 2 3 4]
fun3()函数调用后arr1的值: [1 2 3 4]
fun4()函数中数组指针: &[1 2 3 4]
fun4()函数中修改后数组指针: &[200 2 3 4]
fun4()函数调用后arr1的值: [200 2 3 4]
网友评论