Go语言实践Go

go 语言指针

2020-04-14  本文已影响0人  sha_ka

go 语言指针

go 语言的参数传递全部都是 值传递

package main

import "fmt"

/*
指针
*/

// go 参数传递是 值传递 还是引用传递呢
// go 参数传递全部都是 ------> 值传递
func swapP(a, b *int) {
    // 2
    *a, *b = *b, *a
}

func swap2(a, b int) (int , int) {
    // 3
    return b, a  // 返回的时候交换一下位置
}

func swap(a, b int) {
    // 1
    a, b = b, a
}

func main() {
    var a int = 2
    var pa *int = &a  // &a 是取变量a的地址
    *pa = 3
    fmt.Println(a) // 3 指针发挥作用  指针不能运算
    b := 4
    swap(a, b)
    fmt.Println(a, b) // 值传递结果就是3, 4  修改了也没用 因为传递的是值
    
    
    // ----------
    //swapP(&a, &b)
    //fmt.Println(a, b) // 通过指针交换可以修改 结果为: 4,3
    // ---------

    a, b = swap2(a, b) // 通过交换返回值交换 结果为: 4,3
    fmt.Println(a, b) // 注意上边一定是注释掉的 否则结果就变回原来的 3, 4 了交换了两次有回到最初状态了

}

上一篇下一篇

猜你喜欢

热点阅读