• 指针


    1、定义:指针也叫指针变量,存储一个变量的地址。两个符号:& 取一个变量地址;* 取一个指针变量所指向的地址的值

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        var x int
        var x_ptr *int
    
        x = 10
        x_ptr = &x
    
        fmt.Println(x)
        fmt.Println(x_ptr)
        fmt.Println(*x_ptr)
    }

    结果图

    &符号是取变量地址,*符号是取地址指向的值;一个普通的变量,不是指针变量的话,只能使用&符号取到地址,而不能使用*符号

    &符号和*符号是可以相互抵消的,示例代码如下

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        var x int
        var x_ptr *int
    
        x = 10
        x_ptr = &x
    
        fmt.Println(x)      //输出x的值
        fmt.Println(&x_ptr) //输出x_ptr的地址
        fmt.Println(*x_ptr) //输出x_ptr指向的值
        fmt.Println(x_ptr)  //输出x的地址
        fmt.Println(*&x_ptr)  //*和&可以相互抵消
        fmt.Println(&*x_ptr)
        fmt.Println(&x)
        fmt.Println(*&x)
    }

    结果图

    2、用途:作为实参传入函数,改变原来变量的值

    package main
    
    import (
        "fmt"
    )
    
    func change(x *int) {
        *x = 200
    }
    
    func main() {
        var x int = 100
        fmt.Println(x)
        change(&x)
        fmt.Println(x)
    }

    结果图

    3、使用new关键字创建一个指针

    package main
    
    import (
        "fmt"
    )
    
    func set_value(x_ptr *int) {
        *x_ptr = 100
    }
    
    func main() {
        //使用new创建一个指针
        x_ptr := new(int)
        //将指针指向某值的地址
        set_value(x_ptr)
        //打印该指针指向的地址
        fmt.Println(x_ptr)
        //打印指针所在地址
        fmt.Println(&x_ptr)
        //打印指针指向地址的值
        fmt.Println(*x_ptr)
    }

    结果图

    4、交换两个变量值示例

    package main
    
    import (
        "fmt"
    )
    
    func swap(x, y *int) {
        *x, *y = *y, *x
    }
    
    func main() {
        x_val := 100
        y_val := 200
        swap(&x_val, &y_val)
        fmt.Println(x_val)
        fmt.Println(y_val)
    }

    结果图

  • 相关阅读:
    总复习
    第十七天(最后的模块)
    第十五天(内置函数)
    第16天(内置模块)
    第十四天(模块)
    第十三天(都是理论)
    第十二天(叠加装饰器和迭代器)
    python基础学习-day33==课后作业练习
    python基础学习-面向对象高级
    python基础学习-day29==课后作业练习
  • 原文地址:https://www.cnblogs.com/hujiapeng/p/9646301.html
Copyright © 2020-2023  润新知