Go语言命令行复习笔记
Posted YuNansen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言命令行复习笔记相关的知识,希望对你有一定的参考价值。
Go语言自带有一套完整的命令操作工具。
go clean
这个命令是用来移除当前源码包里面编译生成的文件。我一般都是利用这个命令清除编译文件,然后github递交源码,在本机测试的时候这些编译文件都是和系统相关的,但是对于源码管理来说没必要。
go fmt
有过C/C++经验的读者会知道,一些人经常为代码采取K&R风格还是ANSI风格而争论不休。在go中,代码则有标准的风格。由于之前已经有的一些习惯或其它的原因我们常将代码写成ANSI风格或者其它更合适自己的格式,这将为人们在阅读别人的代码时添加不必要的负担,所以go强制了代码格式(比如左大括号必须放在行尾),不按照此格式的代码将不能编译通过,为了减少浪费在排版上的时间,go工具集中提供了一个go fmt命令 它可以帮你格式化你写好的代码文件,使你写代码的时候不需要关心格式,你只需要在写完之后执行go fmt <文件名>.go,你的代码就被修改成了标准格式,但是我平常很少用到这个命令,因为开发工具里面一般都带了保存时候自动格式化功能,这个功能其实在底层就是调用了go fmt。
go get
这个命令是用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code和Launchpad。
go flag
在 Golang 程序中有很多种方法来处理命令行参数。简单的情况下可以不使用任何库,直接处理 os.Args;其实 Golang 的标准库提供了 flag 包来处理命令行参数。
package main
import "flag"
import "fmt"
// 定义命令行参数对应的变量,这三个变量都是指针类型
var cliName = flag.String("name", "nick", "Input Your Name")
var cliAge = flag.Int("age", 28, "Input Your Age")
var cliGender = flag.String("gender", "male", "Input Your Gender")
// 定义一个值类型的命令行参数变量,在 Init() 函数中对其初始化
// 因此,命令行参数对应变量的定义和初始化是可以分开的
var cliFlag int
func Init()
flag.IntVar(&cliFlag, "flagname", 1234, "Just for demo")
func main()
// 初始化变量 cliFlag
Init()
// 把用户传递的命令行参数解析为对应变量的值
flag.Parse() //必须
// flag.Args() 函数返回没有被解析的命令行参数
// func NArg() 函数返回没有被解析的命令行参数的个数
fmt.Printf("args=%s, num=%d\\n", flag.Args(), flag.NArg())
for i := 0; i != flag.NArg(); i++
fmt.Printf("arg[%d]=%s\\n", i, flag.Arg(i))
// 输出命令行参数
fmt.Println("name=", *cliName)
fmt.Println("age=", *cliAge)
fmt.Println("gender=", *cliGender)
fmt.Println("flagname=", cliFlag)
使用 flag 包前要通过 import 命令导入该包:
import "flag"
定义一个整型的参数 age,返回指针类型的变量:
var cliAge = flag.Int("age", 28, "Input Your Age")
创建值类型的参数变量,并在 Init() 函数中对其初始化(注意这里调用的是 flag.IntVar 方法):
var cliFlag int
func Init()
flag.IntVar(&cliFlag, "flagname", 1234, "Just for demo")
通过 flag.Parse() 函数接下命令行参数,解析函数将会在碰到第一个非 flag 命令行参数时停止:
flag.Parse()
isbool (一个 - 符号,布尔类型该写法等同于 -isbool=true)
-age=x (一个 - 符号,使用等号)
-age x (一个 - 符号,使用空格)
--age=x (两个 - 符号,使用等号)
--age x (两个 - 符号,使用空格)
本文介绍了 Golang 标准库中 flag 包的基本用法,并进一步分析了其主要的代码逻辑。其实 flag 包还支持用户自定义类型的命令行参数。
转自:
https://studygolang.com/articles/5986
https://www.cnblogs.com/sparkdev/p/10812422.html
以上是关于Go语言命令行复习笔记的主要内容,如果未能解决你的问题,请参考以下文章