美文网首页
Go语言指针

Go语言指针

作者: 沫明 | 来源:发表于2019-12-23 16:18 被阅读0次

    1.取地址操作符&和取值操作符是一对互补操作符,&取出地址,根据地址取出地址指向的值。

    2.创建指针的另一种方法——new() 函数

    new() 函数可以创建一个对应类型的指针,创建过程会分配内存,被创建的指针指向默认值。

    3.%传参

    %T 打印的类型
    %p 打印的指针地址
    %s 打印值

    4.使用指针变量可以获取命令行的输入信息【参考于:http://c.biancheng.net/view/21.html

    Go语言内置的 flag 包实现了对命令行参数的解析,flag 包使得开发命令行工具更为简单。

    5.参考代码:

    package main
    
    import (
        "fmt"
    )
    
    // &取出地址,*根据地址取出地址指向的值
    func main()  {
        test5()
    }
    
    func test1()  {
        var cat int=1
        var str string="banana"
        fmt.Println(&cat,*&str)    //0xc0000200f8 banana
        fmt.Printf("%p %p",&cat,&str)  //0xc0000200f8 0xc000010200
    }
    //0xc00009a010 banana
    //0xc00009a010 0xc0000781e0
    
    func test2()  {
        var house = "Malibu Point 10880, 90265"
        ptr :=&house
    
        // %T 打印ptr的类型
        fmt.Printf("ptr typr:%T \n",ptr)   //ptr typr:*string
    
        // %p 打印ptr的指针地址
        fmt.Printf("address:%p\n",ptr)     //address:0xc0000781e0
    
        // 对指针进行取值操作
        value := *ptr
        fmt.Printf("value type: %T\n", value)
        // %s 指针取值后就是指向变量的值
        fmt.Printf("value: %s\n", value)
    
    }
    
    // 交换函数
    func swap(a, b *int) {
        // 取a指针的值, 赋给临时变量t
        t := *a
        // 取b指针的值, 赋给a指针指向的变量
        *a = *b
        // 将a指针的值赋给b指针指向的变量
        *b = t
    }
    
    func test4()  {
        a,b:=1,2
        b,a=a,b
        fmt.Println(a,b)
    }
    
    
    //创建指针的另一种方法——new() 函数
    func test5(){
        str := new(string)  //new() 函数可以创建一个对应类型的指针,创建过程会分配内存,被创建的指针指向默认值
        *str = "Go语言教程"
        fmt.Println(str)
        fmt.Println(*str)
    }

    相关文章

      网友评论

          本文标题:Go语言指针

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