Go变量和常量 | 青训营

68 阅读3分钟

标识符和关键字

标识符

程序员自己定义的具有特殊意义的,例如变量名、常量名、函数名、包名……

组成:由数字、字母、_(下划线)组成,不能以数字开头,标识符不可以是关键字

注意:标识符区分大小写

关键字

Go语言中预先定义好的

Go语言中的关键字:

break  default  func     interface    select
chan   case     const    continue     defer
go     map      struct   switch       if
else   goto     package  fallthrough  var
return import   type     range        for

Go语言中的保留字:

int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64
complex64 complex128

bool     byte    rune   string  error   make  len  cap
new      append  copy   close   delete  panic 
recover  true    false  iota    nil

关键字和保留字都不可以用来做标识符

变量

方便在内存上访问数据

变量类型

每一个变量都有自己的变量类型,比如整型、浮点型、布尔型……

变量的声明

变量在使用之前都必须要声明,且声明变量后必须使用,不然会报错

格式:var 变量名 变量类型

变量类型必须写

// 变量的声明  
var name string  

若要一次声明多个变量

var (
    name string
    age int
)

变量的初始化

声明时进行初始化

var name (string) = "张三"

这时变量类型可以不写,编译器会根据值判断变量类型

短变量声明声明时进行初始化

name := "张三"

注意:只能在函数内使用

若声明时没有给出初始值,则go语言会自动初始化

整型和浮点型默认初始化为0

字符型默认初始化为空字符( )

布尔型默认初始化为false

切片、指针、map……默认初始化为nil

匿名变量

某变量需要接收但不需要使用时可以用_

var arr = [...]int{1,2,3,4,5}
for _,v := range arr {
}

常量

值恒定不变

格式:const 变量名 变量类型 = 值

注意:常量在定义时必须赋值 多个常量一起声明

const (
      num1 = 1
      num2 = 2
      num3 = 3
)

若下面的常量忽略了值,则忽略了的值与上面一行一样

const (
      num1 = 1
      num2 
      num3 
)
const (
      num1 = 1
      num2 = 1
      num3 = 1
)

上面两种写法结果一致

iota

iota是常量计数器,只能在常来那个表达式中使用 计数规则:const出现时iota重置为0 const中每新增一行常量声明iota计数一次

几种情况

情况一

const (
      num1 = iota  //0
      num2         //1
      num3         //2
      num4         //3
)

情况二

const (
      num1 = iota  //0
      _         
      num3         //2
      num4         //3
)

情况三

const (
      num1 = iota  //0
      num2 = 100   //100       
      num3         //2
      num4         //3
)

情况四

const (
      num1,num2 = iota,iota    //0  0
      num3,num4                //1  1
)

情况五

const (
      _ = iota
      KB = 1 << (iota * 10)  // 10000000000  1024
      MB = 1 << (iota * 10)  // 10000000000 0000000000  1024 * 1024
      GB = 1 << (iota * 10)  // ....  1024*1024*1024
      TB = 1 << (iota * 10)  // ....  1024*1024*1024*1024
)