Go语言指针

2019-12-23  本文已影响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)
}
上一篇下一篇

猜你喜欢

热点阅读