package os

import “os”
os包提供了操作系统函数的不依赖平台的接口。设计为Unix风格的,虽然错误处理是go风格的;失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。例如,如果某个使用一个文件名的调用(如Open、Stat)失败了,打印错误时会包含该文件名,错误类型将为*PathError,其内部可以解包获得更多信息。
os包的接口规定为在所有操作系统中都是一致的。非公用的属性可以从操作系统特定的syscall包获取。

var Args []string
Args保管了命令行参数,第一个是程序名。

代码

参数通过空格区分,这种方式必须保证参数的顺序
mysql -u root -p 123 ,这种是通过指定参数名解析参数

原生方式

  1. // 获取命令行参数 os.Args
  2. package main
  3. import (
  4. "fmt"
  5. "os"
  6. )
  7. func main() {
  8. fmt.Printf("命令行的参数有 %v 个 \n", len(os.Args))
  9. for i, v := range os.Args {
  10. i++
  11. fmt.Printf("第 %v 个 参数: %v \n", i, v)
  12. }
  13. /*
  14. 命令行的参数有 5 个
  15. 第 1 个 参数: D:\go-project\src\go_code\argsdemo\main\testArgs.exe
  16. 第 2 个 参数: tom
  17. 第 3 个 参数: aaa
  18. 第 4 个 参数: 1111
  19. 第 5 个 参数: 哈哈
  20. */
  21. }
  22. // go build -o testArgs.exe .\main.go
  23. // .\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。

  1. // flag 包命令行参数解析
  2. package main
  3. import (
  4. "flag"
  5. "fmt"
  6. )
  7. func main() {
  8. // 定义变量,用于接收命令行参数值
  9. var user string
  10. var pwd string
  11. var host string
  12. var port int
  13. // &user 就是接收命令行里 -u 后面的值
  14. // u 就是指 -u 这个参数
  15. // "" 默认值
  16. // "描述:用户名,默认为空" 说明
  17. flag.StringVar(&user, "u", "", "描述:用户名,默认为空")
  18. flag.StringVar(&pwd, "pwd", "", "描述:密码,默认为空")
  19. flag.StringVar(&host, "h", "localhost", "描述:主机名,默认为空")
  20. flag.IntVar(&port, "port", 3306, "描述:端口,默认为空")
  21. // 转换, 必须调用
  22. flag.Parse()
  23. // 输出结果
  24. fmt.Printf("user=%v, pwd=%v, host=%v, port=%v \n",
  25. user, pwd, host, port)
  26. // user=xiao, pwd=123456, host=localhost, port=3308
  27. }
  28. // go build -o testFlag.exe .\main.go
  29. // .\testFlag.exe -u xiao -pwd 123456 -port 3308