“区块链+时代无疑会是下一个风口,然而现在的区块链行业专业型人才正在遭遇瓶颈”兄弟连教育区块链学院院长尹成表示,“希望能通过兄弟连教育区块链培训学院为社会为企业培养并输送更多优质的区块链高精尖型技术人才。
部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用flag库和os库。
1.flag库的使用
Go语言标准库提供了用于快迅解析命令行参数的flag包大致的使用步骤如下:
a.通过flag.String()flag.Bool()fla***t()等方式来定义命令行中需要使用的参数。
b.在定义完flag后,通过调用flag.Parse()来进行对命令行参数的解析。
c.获取flag.String()flag.Bool()fla***t()等方法的返回值即对应用户输入的参数.
需要注意的是flag.Xxx()返回的值是变量的内存地址要获取值时要通过在变量前加*(星号)获取.
说明:
像fla***t、flag.Bool、flag.String这样的函数格式都是一样的,调用的时候需要传入3个参数
参数的说明如下:
一、arg表示参数名称,在控制台的时候提供给用户使用.
二、arg表示默认值,如果用户在控制台没有给该参数赋值的话就会使用该默认值.
三、arg表示使用说明和描述在控制台中输入-arg的时候会显示该说明类似-help
看个完整的使用例子:
packagemain
import(
"flag"
"fmt"
)
funcmain(){
married:=flag.Bool("married"false"Areyoumarried?")
age:=fla***t("age"22"Howoldareyou?")
name:=flag.String("name""""Whatyourname?")
varaddressstring
//flag.StringVar这样的函数个参数换成了变量地址,后面的参数和flag.String是一样的。
flag.StringVar(&address"address""GuangZhou""Whereisyouraddress?")
flag.Parse()//解析输入的参数
fmt.Println("输出的参数married的值是:"*married)//不加*号的话输出的是内存地址
fmt.Println("输出的参数age的值是:"*age)
fmt.Println("输出的参数name的值是:"*name)
fmt.Println("输出的参数address的值是:"address)
}
从运行结果中可以看出address参数我们并没有指定值则输出的就是默认值.
另外-arg后面的=号也不是必须的可以用空格代替.
如果要查看该程序的所有参数的使用可以使用-help来查看如下:
2.os库的使用
直接看例子
packagemain
import(
"os"
"fmt"
)
funcmain(){
args:=os.Args//获取用户输入的所有参数
ifargs==nil||len(args)<2{
Usage()//如果用户没有输入或参数个数不够则调用该函数提示用户
return
}
name:=args[1]//获取输入的个参数
age:=args[2]//获取输入的第二个参数
fmt.Println("yournameis:"name"\nyourageis:"age)
}
varUsage=func(){
fmt.Println("youname?");
fmt.Println("youage?");
}
个人感觉还是flag获取参数好用一点因为flag更贴切参数的用法而且可以查看详情.
后补充下如何获取变量的内存地址和接收方式
packagemain
import(
"fmt"
)
funcmain(){
varnamestring="abc"
varnameAddress*string=&name;//如果要接收变量的内存地址变量对应的类型前要加*号
fmt.Println("name变量的内存地址:"&name)
fmt.Println("nameAddress的值:"nameAddress)
fmt.Println("&name==nameAddress?"&name==nameAddress)
fmt.Println("nameAddress对应变量的值:"*nameAddress)//内存地址前加*号则可以看到对应的值了.
fmt.Println("name变量的值:"*&*&name)//*号和&可以多次组合来使用阅读的时候从右往左
}
兄弟连区块链培训之Go语言学习获取命令行参数
北京电脑/网络相关信息
11月7日
9月2日
8月13日
7月1日
6月17日
4月23日
4月19日
4月11日
4月9日
4月7日