Go语言命令行和运算符

命令行参数

  • 在Go语言中main函数是不接收任何参数的, 但是还是可以通过其它方式来接收命令行参数

方法一

导入os包,然后通过os包的Args属性获取命令行参数

  • 注意点:

    1. 和C语言一样, 默认会将当前被执行程序的可执行文件的路径传递给我们

    2. 和C语言一样, 无论外界传入的数据是什么类型, OS包拿到的都是字符串类型

  • 通过os包获取命令行参数的弊端:

    1. 如果用户少传入了参数, 会报错

    2. 无论用户传入的是什么类型, 最终获取到的都是字符串类型

    3. 传递参数的时候, 必须按照业务逻辑的顺序来传递, 传递的顺序不能被打乱

     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

5.Go语言多一个逻辑清零运算符
&^ 逻辑清零运算符
假如a = 9 ,b = 6
a &^ b如下
如果b的二进制的当前位是1, 那么就清零
如果b的二进制的当前位不是1, 那么就保留a对应二进制位的数据

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容