package os
import “os”
os包提供了操作系统函数的不依赖平台的接口。设计为Unix风格的,虽然错误处理是go风格的;失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。例如,如果某个使用一个文件名的调用(如Open、Stat)失败了,打印错误时会包含该文件名,错误类型将为*PathError,其内部可以解包获得更多信息。
os包的接口规定为在所有操作系统中都是一致的。非公用的属性可以从操作系统特定的syscall包获取。
var Args []string
Args保管了命令行参数,第一个是程序名。
代码
参数通过空格区分,这种方式必须保证参数的顺序
mysql -u root -p 123 ,这种是通过指定参数名解析参数
原生方式
// 获取命令行参数 os.Args
package main
import (
"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 main
import (
"flag"
"fmt"
)
func main() {
// 定义变量,用于接收命令行参数值
var user string
var pwd string
var host string
var 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