package os
import “os”
os包提供了操作系统函数的不依赖平台的接口。设计为Unix风格的,虽然错误处理是go风格的;失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。例如,如果某个使用一个文件名的调用(如Open、Stat)失败了,打印错误时会包含该文件名,错误类型将为*PathError,其内部可以解包获得更多信息。
os包的接口规定为在所有操作系统中都是一致的。非公用的属性可以从操作系统特定的syscall包获取。
var Args []string
Args保管了命令行参数,第一个是程序名。
代码
参数通过空格区分,这种方式必须保证参数的顺序
mysql -u root -p 123 ,这种是通过指定参数名解析参数
原生方式
// 获取命令行参数 os.Argspackage mainimport ("fmt""os")func main() {fmt.Printf("命令行的参数有 %v 个 \n", len(os.Args))for i, v := range os.Args {i++fmt.Printf("第 %v 个 参数: %v \n", i, v)}/*命令行的参数有 5 个第 1 个 参数: D:\go-project\src\go_code\argsdemo\main\testArgs.exe第 2 个 参数: tom第 3 个 参数: aaa第 4 个 参数: 1111第 5 个 参数: 哈哈*/}// go build -o testArgs.exe .\main.go// .\testArgs.exe tom aaa 1111 哈哈
flag包解析命令行参数
package flag
import “flag”
flag包实现了命令行参数的解析。
func IntVar(p int, name string, value int, usage string)
IntVar用指定的名称、默认值、使用信息注册一个int类型flag,并将flag的值保存到p指向的变量。
func StringVar(p string, name string, value string, usage string)
StringVar用指定的名称、默认值、使用信息注册一个string类型flag,并将flag的值保存到p指向的变量。
func Parse()
从os.Args[1:]中解析注册的flag。必须在所有flag都注册好而未访问其值时执行。未注册却使用flag -help时,会返回ErrHelp。
// flag 包命令行参数解析package mainimport ("flag""fmt")func main() {// 定义变量,用于接收命令行参数值var user stringvar pwd stringvar host stringvar port int// &user 就是接收命令行里 -u 后面的值// u 就是指 -u 这个参数// "" 默认值// "描述:用户名,默认为空" 说明flag.StringVar(&user, "u", "", "描述:用户名,默认为空")flag.StringVar(&pwd, "pwd", "", "描述:密码,默认为空")flag.StringVar(&host, "h", "localhost", "描述:主机名,默认为空")flag.IntVar(&port, "port", 3306, "描述:端口,默认为空")// 转换, 必须调用flag.Parse()// 输出结果fmt.Printf("user=%v, pwd=%v, host=%v, port=%v \n",user, pwd, host, port)// user=xiao, pwd=123456, host=localhost, port=3308}// go build -o testFlag.exe .\main.go// .\testFlag.exe -u xiao -pwd 123456 -port 3308
