zoukankan      html  css  js  c++  java
  • go指针

    一。定义:

          数据类型前加 * 号: var xx *int   var yy  *string  。。。

    二。用途:

          指针的一大用途就是可以将变量的指针作为实参传递给函数,从而在函数内部能够直接修改实参所指向的变量值

    三。用法:

         & 取一个变量的地址

         * 取一个指针变量所指向的地址的值

    四。new函数:初始化了一个地址

    package main
    import (
        "fmt"
     )
    func set_value(x_ptr *int) {
        *x_ptr = 100
    }
    func main() {
        x_ptr := new(int)
     
    set_value(x_ptr)
    //x_ptr 指向的地址 
    fmt.Println(x_ptr) 
    //x_ptr 本身的地址
     fmt.Println(&x_ptr) 
    //x_ptr 指向的地址值 
    fmt.Println(*x_ptr)
     }

    五。go语言命令行入参,通过flag入参数。 

    Go 语言的 flag 包中,定义的指令以指针类型返回。通过学习 flag 包,可以深入了解指针变量在设计上的方便之处。

    下面的代码通过提前定义一些命令行指令和对应变量,在运行时,输入对应参数的命令行参数后,经过 flag 包的解析后即可通过定义的变量获取命令行的数据。

    获取命令行输入:

     1 package main
     2 // 导入系统包
     3 import (
     4     "flag"
     5     "fmt"
     6 )
     7 // 定义命令行参数
     8 var mode = flag.String("mode", "", "process mode")
     9 func main() {
    10     // 解析命令行参数
    11     flag.Parse()
    12     // 输出命令行参数
    13     fmt.Println(*mode)
    14 }

    将这段代码命名为main.go,然后使用如下命令行运行:

    $ go run flagparse.go --mode=fast

    命令行输出结果如下:
    fast

    代码说明如下:

    • 第 8 行,通过 flag.String,定义一个 mode 变量,这个变量的类型是 *string。后面 3 个参数分别如下:
      • 参数名称:在给应用输入参数时,使用这个名称。
      • 参数值的默认值:与 flag 所使用的函数创建变量类型对应,String 对应字符串、Int 对应整型、Bool 对应布尔型等。
      • 参数说明:使用 -help 时,会出现在说明中。
    • 第 11 行,解析命令行参数,并将结果写入创建的指令变量中,这个例子中就是 mode 变量。
    • 第 13 行,打印 mode 指针所指向的变量。


    由于之前使用 flag.String 已经注册了一个 mode 的命令行参数,flag 底层知道怎么解析命令行,并且将值赋给 mode*string 指针。在 Parse 调用完毕后,无须从 flag 获取值,而是通过自己注册的 mode 这个指针,获取到最终的值。代码运行流程如下图所示。


    图:命令行参数与变量的关系
  • 相关阅读:
    bzoj1731 [Usaco2005 dec]Layout 排队布局
    loj10087 Intervals
    差分约束小结
    bzoj1112 [POI2008]砖块Klo
    bzoj3524 [POI2014]Couriers
    poj2752 Seek the Name, Seek the Fame
    1027C Minimum Value Rectangle
    bzoj2212 [POI2011]Tree Rotations
    bzoj3747 [POI2015]Kinoman
    628D Magic Numbers
  • 原文地址:https://www.cnblogs.com/derekchen/p/9740988.html
Copyright © 2011-2022 走看看