分享
  1. 首页
  2. 文章

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

兄弟连区块链培训 · · 1182 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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


部署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


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)//*号和&可以多次组合来使用,阅读的时候从右往左


}

高能预警,兄弟连教育区块链直播课程8月持续火爆来袭!

原价1188元的12节区块链进阶课程,现仅需1元!

还可免费领取《Go语言基础实战项目开发》与《Go语言高级实战项目开发》教材两本!!

限时限量!!先到先得!!

http://www.ydma.cn/open/course/24


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:兄弟连区块链培训

查看原文:兄弟连区块链培训之Go语言学习获取命令行参数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1182 次点击
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏