1. package main
    2. import "fmt"
    3. func main() {
    4. fmt.Println(changeVa(1))
    5. a := 10
    6. b := &a
    7. fmt.Println(changeVa(a)) // output: 11
    8. fmt.Println(changePtr(b)) //output: 11
    9. // 只是值传递调用了,调用结束退出栈,所以不会改变a的实际值
    10. changeVa(a)
    11. fmt.Println(a) // output: 11
    12. // 指针传递地址,所以改变了该地址上指向的值
    13. changePtr(b)
    14. fmt.Println(*b) // output: 12
    15. }
    16. func changeVa(a int) int {
    17. a = a + 1
    18. return a
    19. }
    20. func changePtr(a *int) int {
    21. *a = *a + 1
    22. return *a
    23. }