go学习笔记(5)基本类型和声明(4)

0001.jpeg

今天是元宵节,大家吃汤圆了吗🍜?

继续讲 go 的基本类型。

常量

和其他语言一样,go 也能定义常量。

1
const x int64 = 100

基本上和 var 的写法类似。

在 go 语言中,const 等于是给字面量命名,它只能保存编译器在编译时能得到的值。大概有如下几类:

  • 数值字面量
  • truefalse
  • 字符串
  • 字符
  • 内置函数 complexrealimaglencap
  • 能在编译时确定值的表达式

go 不能保证一个在运行时计算出来的值是不变的。

有类型及无类型常量

常量可以有类型也可以是无类型的。

无类型常量就和字面量一样,它本身没有类型,但如果在使用时不能推断出类型,那它将是它字面量的默认类型。

1
2
3
4
5
const a = 123

var b int = a
var c float64 = a
d := a

有类型常量只能与其类型相同的变量进行计算和赋值。

未使用的变量

go 有一个非常强势的语法规定,go 要求每一个被定义的 局部变量 都必须被使用。否则会报一个编译错误。这能很大程度减少代码冗余,提高代码质量。

但是 go 编译器的检查相对是比较宽松的,只要变量被读取一次就不会再报错了,就算又对变量赋值但后面没使用也不管了。

1
2
3
4
5
func main(){
x:=123
fmt.Println(x)
x=10
}

如果想发现这类问题可以使用 golangci-lint

go 语言可以定义未使用的 包级别的变量

go 语言允许创建 未使用的常量

江达小记