Go_039_函数传参的值拷贝

函数传参是进行值拷贝

var x = 1 和 x = 100 是两个不同的值,两者没有关系
一个是 main 函数当中的变量,一个是 foo 函数当中的变量
foo(x) 是把 x = 1 赋值给 foo 当中的形参 x
然后在各自的区域当中

package main

import "fmt"

func foo(x int) {
    x = 100
}

func main() {
    var x = 1
    foo(x)
    fmt.Println(x)
}

运行结果是:1

结果是20,因为值拷贝的原因,setAge没有起作用
如果想要修改,得使用地址,通过地址对原值进行修改

package main

import "fmt"

func setAge(age int) {
    age++
}

func main() {
    var age = 20
    setAge(age)
    fmt.Println(age)
}

运行结果是20

你可能感兴趣的:(Go_039_函数传参的值拷贝)