go 语言指针

作者: sha_ka | 来源:发表于2020-04-14 14:43 被阅读0次

    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 了交换了两次有回到最初状态了
    
    }
    
    

    相关文章

      网友评论

        本文标题:go 语言指针

        本文链接:https://www.haomeiwen.com/subject/ahftvhtx.html