GO-变量、常量、作用域

117 阅读2分钟

  • 变量

    • 变量就是用来绑定内存中,某一个地址的数据的。例如 var name string = "alexli",此时的name就是一个变量。

    • 声明变量的方式

      • var name string = "alexli"

      • var name = "alexli"

      • name:="alexli"

      • var (name = 1)

  • 常量

    • Go 语言的常量是一种在源码编译期间被创建的语法元素;常量一旦被声明初始化后,它的值在整个程序的生命周期内亘古不变。(分配到堆上的)

    • 声明产量的方式

      • const name string = “alexli”

      • const name = "alexli"

      • const ( name string ="alexli")

    • 即便两个类型有相同的底层类型,但它们仍然是不同的数据类型,不可以被相互比较或混在一个表达式中进行运算。

    • 有类型常量与变量混合在一起进行运算求值的时候,也必须准遵守类型相同这一要求,或者通过显示类型转换达到可运算。

    • 无类型常量不是真的没有类型,它有自己的默认类型——根据初始值决定的。

  • 作用域

    • 作用域的概念是针对标识符的,不局限于变量。每个标识符都有自己的作用域,而一个标识符的作用域就是指这个标识符在被声明后可以被有效使用的源码区域;作用域是一个编译期的概念,也就是说,编译器在编译过程中会对每个标识符的作用域进行检查,对于在标识符作用域外使用该标识符的行为会给出编译错误的报错。
  • 避免变量遮蔽的原则

    • 变量是标识符的一种,前面说的标识符的作用域规则同样适用于变量;变量遮蔽问题的根本原因,就是内层代码块中声明了一个与外层代码块同名且同类型的变量,内层代码块中的同名变量就会替代那个外层变量。

    • go vet 工具可以对 Go 源码做一系列静态检查

    • go install golang.org/x/tools/go/…

  • 占位符

    • %d:十进制整数

    • %f:浮点数

    • %s:字符串

    • %t:布尔值

    • %v:通用格式化标识符,根据值的类型进行格式化

    • %p:指针地址

    • %b:二进制表示

    • %o:八进制表示

    • %x:十六进制表示(小写字母)

    • %X:十六进制表示(大写字母)

    • %c:字符

    • %q:带引号的字符串

    • %e:科学计数法表示的浮点数(小写字母e)

    • %E:科学计数法表示的浮点数(大写字母E)

    • %g:根据实际情况选择%f或%e格式

    • %G:根据实际情况选择%f或%E格式