go指针

一。定义:函数

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

二。用途:spa

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

三。用法:设计

     & 取一个变量的地址指针

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

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

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 包的解析后便可经过定义的变量获取命令行的数据。

获取命令行输入:string

 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 这个指针,获取到最终的值。代码运行流程以下图所示。

图:命令行参数与变量的关系
相关文章
相关标签/搜索