首页 > 新闻详情

兄弟连区块链培训之学习获取命令行参数

来源:北京兄弟连Java培训学校

时间: 2018/9/2 15:46:04


 “区块链+时代无疑会是下一个风口,然而现在的区块链行业专业型人才正在遭遇瓶颈”兄弟连教育区块链学院院长尹成表示,“希望能通过兄弟连教育区块链培训学院为社会为企业培养并输送更多优质的区块链高精尖型技术人才。  

部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用flag库和os库。  

1.flag库的使用  

Go语言标准库提供了用于快迅解析命令行参数的flag包,大致的使用步骤如下:  

a.通过flag.String(),flag.Bool(),flag.Int()等方式来定义命令行中需要使用的参数。  

b.在定义完flag后,通过调用flag.Parse()来进行对命令行参数的解析。  

c.获取flag.String(),flag.Bool(),flag.Int()等方法的返回值,即对应用户输入的参数.  

需要注意的是flag.Xxx()返回的值是变量的内存地址,要获取值时要通过在变量前加*(星号)获取.  

说明:  

像flag.Int、flag.Bool、flag.String这样的函数格式都是一样的,调用的时候需要传入3个参数  

参数的说明如下:  

一、arg表示参数名称,在控制台的时候,提供给用户使用.  

二、arg表示默认值,如果用户在控制台没有给该参数赋值的话,就会使用该默认值.  

三、arg表示使用说明和描述,在控制台中输入-arg的时候会显示该说明,类似-help  

看个完整的使用例子:  

packagemain  

import(  

"flag"  

"fmt"  

)  

funcmain(){  

married:=flag.Bool("married",false,"Areyoumarried?")  

age:=flag.Int("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

优先领取试听课
版权所有:搜学搜课(wwww.soxsok com)