这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
一、本堂课重点内容
本堂课的知识要点有哪些?
- Go语言常量
- Go语言变量
二、详细知识点介绍
本堂课介绍了哪些知识点?
Go语言常量
- 字面量是Go语言一个很重要的概念,可以简单地说,一切可以用来赋给常量或变量的值都叫字面量,字面量就是字面上,表面上的意思。字面量的本质是一个值,有明确的含义,可以存取,可以赋给其它变量。自定义的函数,结构体等也有字面量,可以用于赋值。
- 常量就是在编译器编译期间就明确的量,包含常量与常量表达式,通常由各种字面量构成。
- 常量可以有类型也可以无类型,在常量表达式中如果有不同类型的数值型常量,则计算结果会被强制类型转换,转换结果是往高精度类型靠拢,即低精度数据会被强制转换成高精度数据。
- 有类型的常量需要显式地指定,定义方法是使用常量声明关键字
const。 - 无类型常量由赋值时的字面量决定类型,编译系统会智能地判别输入字面量的类型,使用最佳精度匹配。
- 常量赋值必须与常量声明同时进行,常量在其整个生命周期中只可以被赋值一次。
- 常量也可以采用平行赋值。
- 常量的多行赋值必须使用小括号。
- Go语言预定义了一个标识符
iota,它是个无类型的连续自增1的整数常量,仅用于const赋值。每出现一次const,iota的值会被重置成常数0;每增加一行,其值会自动加1。而在同一行无论赋给多少个常量,iota值均不变。
Go语言变量
- 变量是程序设计中用来存储中间值与计算结果的标识符,本质上是计算机内存的编号,类似于大楼房间编号。
- Go语言的变量命名规则与常量一样,都是由字母、数字、下划线组成,并且首字母不能是数字。
- Go语言的变量名大小写敏感,相同名字的大写与小写代表不同的变量,哪怕只有其中某一个字母改变了大小写,也代表不同的变量。
- Go语言规定,变量名首字母大写为可导出型变量,可以被其它包引用,而小写字母开头的变量只能在本包内使用,对其它的包不可见。
- 一个良好的变量命名习惯是采用驼峰命名法:首个单词小写,之后每个单词首字母大写,尽量以多字母形式命名变量,突出变量的物理含义。
- 变量声明必须使用关键字
var,而且必须小写,也不允许首字母大写。 - 基础数据类型变量通常使用关键字
var声明,而自定义类型标识符通常用关键字type声明,然后使用var关键字声明自定义类型实例变量。 - Go语言在很多地方都使用了语法糖这样的概念。所谓语法糖,简单说来,就是在不至于引起歧义的地方,尽可能地让程序员少敲键,减轻程序员的负担。
- Go语言规定,变量必须先声明后使用,这个规则尤其在函数内适用。
- Go语言的变量分为全局性变量和局部变量。
- 对于全局性变量,可以在包内任意位置定义,只要定义在函数体外就行。限制条件是:必须使用
var关键字声明,可以在声明的同时初始化,但不可以赋值(注意:初始化与赋值不是同一个概念)。 - 对于大多数编程语言,变量声明后必须经过初始化才能使用。
- Go语言对于值类型的变量会自动初始化为一个缺省的零值,对指针类型的变量默认的初值为nil。
- 数值类型的零值为0,字符串类型的零值为空。
- 变量赋值主要是指动态赋值。
- 在赋值符右边需要程序员显式进行类型转换,以保证赋值符左右类型一致。
- 一个变量在程序运行期间可以被反复多次赋值,无论赋什么样的值,其类型始终如一,不会变化。
- 如果主函数与子函数有同名的变量,则在子函数内,内部变量会覆盖外部变量,内部变量赋值不会影响到外部同名变量。
- Go语言的类型自动转换仅对无类型常量而言,有类型常量仍然需要程序员自主强制转换。
- 布尔型变量只能是布尔型的,不允许强制转换成其它类型。
- 字符串类型也不允许强制转换成数值类型,但是
rune字符类型是可以转换成数值型的。 - 操作符是程序运行中参与算术运算或逻辑运算的符号,是构成表达式的主要元素。
- 常量、变量、操作符及分隔符等一起构成表达式,完成特定功能。