一。定义:函数
数据类型前加 * 号: 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
代码说明以下:
因为以前使用 flag.String 已经注册了一个 mode 的命令行参数,flag 底层知道怎么解析命令行,而且将值赋给 mode*string 指针。在 Parse 调用完毕后,无须从 flag 获取值,而是经过本身注册的 mode 这个指针,获取到最终的值。代码运行流程以下图所示。