Go 变量和常量

117 阅读2分钟

变量和常量

  1. 变量

    • 定义和声明
      • 在Go语言中,可以使用var关键字来声明变量。例如,var num int声明了一个名为num的整数类型变量。变量声明后会有一个默认值,对于数值类型默认是0,字符串类型默认是"",布尔类型默认是false等。
      • 也可以在声明变量的同时进行初始化,如var num int = 5或者更简洁的写法(编译器可以自动推断类型)num := 5。后者是短变量声明,它只能在函数内部使用。
    • 变量的作用域
      • 变量的作用域决定了变量在程序中的可见性和生命周期。在函数内部声明的变量(使用var或者:=),其作用域仅限于该函数内部。例如:
      func myFunction() {
          var localVar int
          localVar = 10
          // localVar只能在myFunction函数内部访问
      }
      
      • 全局变量是在函数外部声明的变量,它可以在整个包内被访问(如果变量名首字母大写,还可以被其他包访问)。例如:
      var globalVar int
      func anotherFunction() {
          globalVar = 20
      }
      
    • 类型转换
      • Go语言是强类型语言,不同类型的变量之间进行操作时可能需要进行类型转换。例如,将一个整数转换为浮点数可以使用float32(num)或者float64(num),其中num是一个整数变量。注意,类型转换需要保证转换是合理的,否则可能会导致数据丢失或错误。
  2. 常量

    • 定义和声明
      • 常量使用const关键字声明。例如,const PI = 3.14159声明了一个名为PI的常量,其值为3.14159。常量的值在定义后不能被修改。
      • 常量也可以是一组相关的值,例如:
      const (
          STATUS_SUCCESS = 0
          STATUS_FAILURE = 1
      )
      
    • 常量生成器(iota)
      • iota是Go语言中的一个特殊常量,用于在常量声明中自动生成连续的值。例如:
      const (
          FIRST = iota
          SECOND
          THIRD
      )
      
      • 在这里,FIRST的值为0,SECOND的值为1,THIRD的值为2。iota在每个const块的开头被重置为0,并且在每个常量声明中自动递增1。
    • 常量的类型推断和显式类型声明
      • 与变量类似,常量声明时也可以省略类型,编译器会根据初始化值自动推断类型。例如,const num = 5,编译器会推断num为整数类型。也可以显式声明常量的类型,如const num int = 5。不过,在很多情况下,省略类型可以让代码更简洁,只要编译器能够正确推断类型即可。