北京

点击搜索

发布

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

区域:
北京 > 昌平 > 回龙观
类别:
APP开发培训
地址:
文化西路育荣教育园区
  “区块链+时代无疑会是下一个风口,然而现在的区块链行业专业型人才正在遭遇瓶颈”兄弟连教育区块链学院院长尹成表示,“希望能通过兄弟连教育区块链培训学院为社会为企业培养并输送更多优质的区块链高精尖型技术人才。

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

}
查看更多北京电脑/网络信息

免责声明:此信息系发布者(UID:496465)自行发布,本站是服务平台,仅提供信息存储空间服务,该信息内容的真实性及合法性由该发布者完全负责。

© lieju.com 联系我们