Go语言命令行和运算符
命令行参数
- 在Go语言中main函数是不接收任何参数的, 但是还是可以通过其它方式来接收命令行参数
- 注意点:
- 和C语言一样, 默认会将当前被执行程序的可执行文件的路径传递给我们
- 和C语言一样, 无论外界传入的数据是什么类型, OS包拿到的都是字符串类型
- 和C语言一样, 默认会将当前被执行程序的可执行文件的路径传递给我们
- 通过os包获取命令行参数的弊端:
- 如果用户少传入了参数, 会报错
- 无论用户传入的是什么类型, 最终获取到的都是字符串类型
- 传递参数的时候, 必须按照业务逻辑的顺序来传递, 传递的顺序不能被打乱
- 如果用户少传入了参数, 会报错
fmt.Println(os.Args[0])
fmt.Println(os.Args[1])
fmt.Println(os.Args[2])
fmt.Printf("%T\n", os.Args[0])
fmt.Printf("%T\n", os.Args[1])
fmt.Printf("%T\n", os.Args[2])
方法二 导入flag包,通过flag包中的stringVar函数获取
- flag.StringVar(&name, "name", "默认的名称", "接收用户的姓名")
- 第一个参数: 要把接收到的数据保存到哪
- 第二个参数: 用于接收的字段名称 -name=lnj
- 第三个参数: 如果用户没有传递参数时的默认值
- 第四个参数: 用户输入--help的时候的提示信息
- 注意点: 通过flag包接收用户输入的命令行参数, 还必须将编写好的参数注册到命令行(flag.Parse())
var name string
flag.StringVar(&name, "name", "默认姓名", "接收姓名")
var age int
flag.IntVar(&age, "age", -1, "接收年龄")
var height float64
flag.Float64Var(&height, "height", 0.0, "接收身高")flag.Parse()//注册命令行参数fmt.Println(name)
fmt.Printf("%T\n", name)
fmt.Println(age)
fmt.Printf("%T\n", age)
fmt.Println(height)
fmt.Printf("%T\n", height)
运算符 只列与C语言不同的地方
1.++ , --不能放在变量前
2.不同类型的变量不能进行运算
3.+号可以用于拼接字符串
4.Go语言没有非0即真的概念,所有的关系运算符返回的都是true和false
【Go语言命令行和运算符】5.Go语言多一个逻辑清零运算符
&^ 逻辑清零运算符
假如a = 9 ,b = 6
a &^ b如下
如果b的二进制的当前位是1, 那么就清零
如果b的二进制的当前位不是1, 那么就保留a对应二进制位的数据
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福