1.go命令行操作
go version 查看当前安装的go版本
go env 查看当前go的环境变量
go fmt 格式化代码
go run 命令文件 编译并运行go程序
package main包中包含main函数的文件,被称为命令文件
其他包中为文件,我们称为源码文件
go build 编译检查
非命令文件执行编译检查,不会产生文件
命令文件编译检查,在当前目录下生成一个可执行文件
可以指定文件名编译: go build 文件名
go install 安装程序
非命令文件执行编译检查,生成.a结尾的包,放到$GOPATH/pkg
命令文件会执行编译检查,生成可执行文件,放到$GOPATH/bin
2.通过os包获取命令行参数
package main
import(
"fmt"
"os"
)
func main(){
//1.获取参入参数个数
num := len(os.Args)
//2.打印所有获取到的参数
for i:=0; i< num;i++{
fmt.Println(os.Args[i])//拿到的都是字符串类型
}
}
//执行命令 main.exe xiaoming 22
//打印
//main.exe 默认参数
//xiaoming 传入参数1
//22 传入参数2
3.通过flag包获取命令行
写法1
package main
import(
"flag"
"fmt"
)
func main(){
/*
flag.xxx(参数名称,默认值,说明)
*/
//1.设置命令行参数
name :=flag.String("name","xiaoming","请输入姓名")//指针
age:=flag.Int("age",33,"请输入人的年龄") //指针
//2.将明亮航参数解析到注册的参数
flag.Parse()
//3.使用命令行参数。注意flag对应的方法返回的都是指针类型
fmt.Println("name =",*name)
fmt.Println("age =",*age)
}
//执行 main.exe
//打印默认值
//name = xiaoming
//age = 33
//执行 main.exe -name=xx -age=11
//打印默认值
//name = xx
//age = 11
写法2
package main
import(
"flag"
"fmt"
)
func main(){
//1.定义变量,保存值
var name string
var age int
//2.设置命令行参数
flag.StringVar(&name,"name","xiaoming","请输入人的姓名")
flag.IntVar(&age,"age",33,"请输入人的年龄")
//3.注册解析命令行参数
flag.Parse()
//4.使用命令行参数
fmt.Println("name = ", name)
fmt.Println(age =", age)
}
os获取参数和flag获取参数对比
1.虽然os可以获取参数,但是如果代码中定义了获取参数,但是执行命令时没传会报错,flag有默认值不传会使用默认值
2.os需要严格按照顺序,flag不需要按顺序并且指定参数名和类型
总结flag 更容易使用