心愿2023能够听到这些话:
- 祝贺你失去了这份工作
- 祝贺你的倡议被采纳了
- 祝贺你被录取了
- 祝贺你的考试顺利通过了
- 祝贺你上岸了
- 祝贺你升职了
- 祝贺你加薪了
- 祝贺你体检后果一切正常
在这篇文章上面许个愿吧!
ls 命令
lsls
lslsls -a.
此命令还有很多性能,这一节的重点是命令行水平的编写,就实现下面四个。
os.Args 读取参数
定义如下,一个数组。该数组长度由参数个数决定,第一个参数为程序自身,前面为参数列表。
var Args []string
ls -lArgs=["ls","-l"]ls
func main() {
targetDirPath := "./"
if len(os.Args) > 1 {
targetDirPath = os.Args[1]
}
if dirList, err := ioutil.ReadDir(targetDirPath); err == nil {
for _, dirInfo := range dirList {
fmt.Print(dirInfo.Name() + " ")
}
} else {
fmt.Println(err.Error())
}
}
os.Agrsioutil.ReadDir[] FileInfoerror
输入
$ go build -o ls main.go
$ ./ls
main.go folder ls
$ ./ls folder
file1 file2
-os.Args
pflag
Goflagpflagflagpflagflag
flaguintuint64pflaguint8uint16int32ipip maskip netcountsliceflagFlagFlagSetpflagflagshorthanddeprecatedhidden
var a = pflag.BoolP("all", "a", false, "Include directory entries whose names begin with a dot (.).")
var help = pflag.BoolP("help", "h", false, "Show this help message.")
pflag.Parse()
if *help {
pflag.Usage()
return
}
args := pflag.Args()
if len(args) == 0 {
args = append(args, "./")
}
if len(args) == 1 {
ShowPath(args[0], *a)
} else {
for _, v := range args {
fmt.Println(v + ":")
ShowPath(v, *a)
}
}
ShowPathboolpflag.BoolPbool--all-apflag.Parse()pflag.Usage()
ls
$ go build -o ls main.go
$ ./ls
folder go.mod go.sum main.go
$ ./ls -a
. .. .git folder go.mod go.sum main.go
$ ./ls ./ folder
./:
folder go.mod go.sum main.go
folder:
file1 file2
$ ./ls -h
Usage of ./ls:
-a, --all Include directory entries whose names begin with a dot (.).
-h, --help Show this help message.
是不是相当给力啦!
小结
命令行读取一共有五个罕用的包
os.ArgsflagGopflagcobraviper
bin
援用
- 命令行工具
- 极客工夫
本文由mdnice多平台公布