golang 命令源码文件

一、简介

1.命令源码文件是独立程序的入口
2.命令源码文件属于main包,包含无参数无结果的main函数
3.可通过go run 命令运行,可接收命令行参数
4.main函数执行的结果意味着当前程序云心的结束
5.同一个代码包不要放多个命令源码文件、
6.命令源码文件与库源码文件也不要放在同一个代码包
7.命令源码文件构建后(go build)生成可执行文件(executable file),构建后生成位置在命令执行目录,在windows中就是扩展名为exe的文件,在linux中一般无扩展名
8.可执行文件安装后生成可执行文件,生成位置在当前工作区的bin子目录或GOBIN包含的记录

命令源码文件的用途

命令源码文件是程序的运行入口,是每个可独立运行的程序必须拥有的。可以通过构建或安装,生成与其对应的可执行文件,后者一般会与该命令源码文件的直接父目录同名。如果一个源码文件声明属于main包,并且包含一个无参数声明且无结果声明的main函数,那么它就是命令源码文件。

1.命令源码文件如何接收参数

golang 命令源码文件_第1张图片

go语言标准库中有一个代码包专门用于接收和解析命令参数,这个包的名字叫flag
StringVar函数 flag.StringVar(&name,“name”,“everyone”,“The greeting object.”)
第一个参数:用于存储该命令参数值的地址,在这个代码中就是变量name的地址
第二个参数:指定该命令参数的名称,这里是name,也可以是其他参数
第三个参数:为了指定在追加该命令参数时的默认值,这里填的是everyone
第四个参数:对命令参数(name)简短的说明,打印命令说明时会用到
flag.Parse()用于真正解析命令参数,并把他们的值赋给相应的变量
golang 命令源码文件_第2张图片
与flag.StringVar函数类似的函数,叫flag.String,这个函数返回一个已经分配好的用于存储命令参数值的地址,所以打印的时候需要换成*name

2.怎么在运行命令源码文件的时候传入参数,怎么查看参数的使用说明

1.运行可执行文件的时候,为参数name传值
golang 命令源码文件_第3张图片
2.查看命令源码文件的参数说明
在这里插入图片描述
/tmp/go-build170210951/b001/exe/main这个地址是go run命令构建上述命令源码文件时临时生成的可执行文件的完整路径。
如果先构建这个源码文件再运行生成的可执行文件结果不一样,go build和go run 生成的可执行文件路径不一样
golang 命令源码文件_第4张图片

3.怎样自定义命令源码文件的参数使用说明

1.对变量flag.Usage()重新赋值,类型是func(),一种无参声明且无结果声明的函数类型
flag.Usage变量在声明时就已经被赋值了,对flag.Usage的赋值必须在调用flag.Parse函数之前
golang 命令源码文件_第5张图片
2.调用flag包中的一些函数(例如StringVar、Parse)的时候,实际上是在调用flag.CommandLine变量的对应方法
flag.CommandLine相当于默认情况下的命令参数容器,所以对flag.CommandLine重新赋值,可以更深层次地定制当前命令源码文件的参数使用说明。
golang 命令源码文件_第6张图片
3.使用flag.NewFlagSet函数的第二个参数值是flag.PanicOnError ,flag.PanicOnError和flag.ExitOnError都是预定义在flag包中的常量。
flag.ExitOnExitError的含义是,告诉命令参数容器,当命令后跟–help或者参数设置的不正确的时候,在打印命令参数使用后说明后以状态码2结束当前程序。状态码2代表用户错误地使用了命令,而flag.PanicOnError的区别就是在最后抛出“运行时恐慌(panic)”.

golang 命令源码文件_第7张图片
golang 命令源码文件_第8张图片
4.不用全局的flag.CommandLine变量,创建一个私有的命令参数容器。
golang 命令源码文件_第9张图片

4.命令源码文件接受哪些类型的参数值

golang 命令源码文件_第10张图片

你可能感兴趣的:(GO,go)