//-- 声明一个包
//-- 一个目录下的同级文件属于同一个包。
//-- 一个Go语言程序必须有且仅有一个 main 包。如果一个程序没有 main 包,那么编译时将会出错,无法生成可执行文件。
package main
//-- 导入程序中所依赖的包;导入的包中不能含有代码中没有使用到的包,否则Go编译器会报编译错误
import (
"flag"
"fmt"
)
//-- 当一个变量被声明之后,系统自动赋予它该类型的零值
//-- 所有的内存在 Go 中都是经过初始化的
var name int
var flagvar int
var nFlag = flag.Int("n", 1234, "help message for flag n")
// var (
// a int
// b string
// c []float32
// d func() bool
// )
// func foo(a int) (b int) {
// ba := 9 + a
// return ba
// }
func init() {
flag.IntVar(&flagvar, "flagname", 12345, "help message for flagname")
flag.Parse()
fmt.Println(flagvar)
fmt.Println("----1--")
}
func main() {
flag.Parse()
//fmt.Println("Hello World!")
//fmt.Println(foo(4))
fmt.Println("----1.1--")
fmt.Println(flagvar)
fmt.Println("---2---")
fmt.Println(nFlag)
fmt.Println(*nFlag)
fmt.Println("---3---")
//init()
}
上述代码如果go的环境安装配置好了,就可以在vscode终端编译了
PS D:\Hello> go build //-- 编译
PS D:\Hello> .\Hello.exe //-- 执行可执行文件
执行的结果是
12345
----1--
----1.1--
12345
---2---
0xc000014088
1234
---3---
挨个比对打印输出,发现打印输出都是 代码中设置的默认值。
现在运行另一个命令
PS D:\Hello> .\Hello.exe -h
打印输出
Usage of D:\Hello\Hello.exe:
-flagname int
help message for flagname (default 12345)
-n int
help message for flag n (default 1234)
再加上参数的值,此时会发现打印出来的参数值,已经被修改了
命令行输入
PS D:\Hello> .\Hello.exe -flagname 987 -n 777
输出
987
----1--
----1.1--
987
---2---
0xc0000140f0
777
---3---
注意: flag.Parse() 的作用, 如果不加,则打印输出还是默认值。