变量

显式的完整声明

var varName dateType [ = value]

  • 关键字var用于声明变量
  • varName为变量标识符
  • dataType为基本类型
  • value为变量的初始值,初始值可以是字面量,也可以是其他变量名,还可以是一个表达式,如果不指定初始值,则默认初始化为类型的零值
  • 一次声明可以定义多个同类型变量,赋值时,值必须与变量数量对应
  • 变量声明后会立即为其分配空间 ```go var a int // 声明一个没有初始值的变量,默认为类型的零值 var b int = 1 // 声明一个变量便设定一个默认值 var c int = 2 * 3 // 声明一个变量,值为一个表达式 var d int = b // 声明一个变量,值为其他变量名 var e, f int // 声明多个变量,值为类型的零值 var g, h int = 10, 20 // 声明多个变量并赋值

// ❌ 错误声明 var a int = “1” // 不能将其他类型赋值给声明类型 cannot use “1” (type string) as type int in assignment var b, c int = 10 // 赋值的数量应与定义的变量数一致 assignment mismatch: 2 variable but 1 values

  1. <a name="5FBrY"></a>
  2. #### 短类型声明
  3. `varName := value`
  4. - 短类型声明不需要`var`关键字和数据类型,Go编译器会自动进行数据类型的推断
  5. - **`:=`声明只能出现在函数或方法内**
  6. - 可以对多个类型变量声明并赋值,例如:`a, b = 1, "hello"`
  7. <a name="GpU4N"></a>
  8. ## 常量
  9. 常量使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义常量时指定的类型决定,而且该内存地址里存放的内容不可以改变,Go中常量分为布尔型、字符串型和数值型常量。常量存储在程序的只读字段里(.rodata section)。<br />**预声明标识符 `iota` **用在常量声明中,其初始值为0, 一组多个常量同时声明时,其值逐行增加,`iota` 可以看做自增的枚举变量,专门用来初始化常量。
  10. ```go
  11. // 类似枚举的iota
  12. const (
  13. c0 = iota // c0 == 0
  14. c1 = iota // c1 == 1
  15. c2 = iota // c2 == 2
  16. )
  17. // 简写模式
  18. // 简写模式下,未赋值的常量与上一个赋值常量的表达式或值一致
  19. const (
  20. c0 = iota // c0 == 0
  21. c1 // c1 = iota == 1
  22. c2 // c2 = iota == 2
  23. )
  24. const (
  25. c0 = 1 // c0 == 1
  26. c1 // c1 == 1
  27. )
  28. // iota逐行增加,与有没有使用iota没有关系
  29. const (
  30. a = iota // a == 0
  31. b = 1
  32. c = iota // c == 2
  33. )
  34. // 分开的const语句,iota每次都从0开始
  35. const x = iota // x == 0
  36. const y = iota // y == 0