Go语言常量与变量 | 青训营笔记

107 阅读5分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

一、本堂课重点内容

本堂课的知识要点有哪些?

  • Go语言常量
  • Go语言变量

二、详细知识点介绍

本堂课介绍了哪些知识点?

Go语言常量

  1. 字面量是Go语言一个很重要的概念,可以简单地说,一切可以用来赋给常量或变量的值都叫字面量,字面量就是字面上,表面上的意思。字面量的本质是一个值,有明确的含义,可以存取,可以赋给其它变量。自定义的函数,结构体等也有字面量,可以用于赋值。
  2. 常量就是在编译器编译期间就明确的量,包含常量与常量表达式,通常由各种字面量构成。
  3. 常量可以有类型也可以无类型,在常量表达式中如果有不同类型的数值型常量,则计算结果会被强制类型转换,转换结果是往高精度类型靠拢,即低精度数据会被强制转换成高精度数据。
  4. 有类型的常量需要显式地指定,定义方法是使用常量声明关键字const
  5. 无类型常量由赋值时的字面量决定类型,编译系统会智能地判别输入字面量的类型,使用最佳精度匹配。
  6. 常量赋值必须与常量声明同时进行,常量在其整个生命周期中只可以被赋值一次。
  7. 常量也可以采用平行赋值。
  8. 常量的多行赋值必须使用小括号。
  9. Go语言预定义了一个标识符iota,它是个无类型的连续自增1的整数常量,仅用于const赋值。每出现一次constiota的值会被重置成常数0;每增加一行,其值会自动加1。而在同一行无论赋给多少个常量,iota值均不变。

Go语言变量

  1. 变量是程序设计中用来存储中间值与计算结果的标识符,本质上是计算机内存的编号,类似于大楼房间编号。
  2. Go语言的变量命名规则与常量一样,都是由字母、数字、下划线组成,并且首字母不能是数字。
  3. Go语言的变量名大小写敏感,相同名字的大写与小写代表不同的变量,哪怕只有其中某一个字母改变了大小写,也代表不同的变量。
  4. Go语言规定,变量名首字母大写为可导出型变量,可以被其它包引用,而小写字母开头的变量只能在本包内使用,对其它的包不可见。
  5. 一个良好的变量命名习惯是采用驼峰命名法:首个单词小写,之后每个单词首字母大写,尽量以多字母形式命名变量,突出变量的物理含义。
  6. 变量声明必须使用关键字var,而且必须小写,也不允许首字母大写。
  7. 基础数据类型变量通常使用关键字var声明,而自定义类型标识符通常用关键字type声明,然后使用var关键字声明自定义类型实例变量。
  8. Go语言在很多地方都使用了语法糖这样的概念。所谓语法糖,简单说来,就是在不至于引起歧义的地方,尽可能地让程序员少敲键,减轻程序员的负担。
  9. Go语言规定,变量必须先声明后使用,这个规则尤其在函数内适用。
  10. Go语言的变量分为全局性变量和局部变量。
  11. 对于全局性变量,可以在包内任意位置定义,只要定义在函数体外就行。限制条件是:必须使用var关键字声明,可以在声明的同时初始化,但不可以赋值(注意:初始化与赋值不是同一个概念)。
  12. 对于大多数编程语言,变量声明后必须经过初始化才能使用。
  13. Go语言对于值类型的变量会自动初始化为一个缺省的零值,对指针类型的变量默认的初值为nil。
  14. 数值类型的零值为0,字符串类型的零值为空。
  15. 变量赋值主要是指动态赋值。
  16. 在赋值符右边需要程序员显式进行类型转换,以保证赋值符左右类型一致。
  17. 一个变量在程序运行期间可以被反复多次赋值,无论赋什么样的值,其类型始终如一,不会变化。
  18. 如果主函数与子函数有同名的变量,则在子函数内,内部变量会覆盖外部变量,内部变量赋值不会影响到外部同名变量。
  19. Go语言的类型自动转换仅对无类型常量而言,有类型常量仍然需要程序员自主强制转换。
  20. 布尔型变量只能是布尔型的,不允许强制转换成其它类型。
  21. 字符串类型也不允许强制转换成数值类型,但是rune字符类型是可以转换成数值型的。
  22. 操作符是程序运行中参与算术运算或逻辑运算的符号,是构成表达式的主要元素。
  23. 常量、变量、操作符及分隔符等一起构成表达式,完成特定功能。

三、引用参考

我参考了哪些外部博客/笔记/文章?