一 、关键字和保留字

1.1 关键字

break  default  func  interface  select  case  defer  go  map  struct
chan  else  goto  package  swith   const  failthrough  if  range  type 
continue  for  import  retrurn  var

1.2 保留字

Constants:  true  false  ioto  nil
Types:  int  int8  int32  int64
        uint  uint8  uint32  uint64  uintptr
        float32  float64  complex128  comlex64
Functions:  make  len  cap  new  append  copy  close  delete
            complex  real  imag
            panic  recover
二、变量

2.1 声明变量

2.1.1 单独声明变量

var 变量名 变量类型如:var age int

var name string
var age int

2.1.2 批量声明变量

var (
    name string
    age int
)

2.1.3 声明变量并赋值

var s1 string="zhangsan"
`或者类型推导(根据值判断变量是什么类型)`
var s2 = "20"
`或者短变量声明:=(只能在函数中使用)`
s3 := "李四"

2.1.4 匿名变量

`在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量。匿名变量用一个下划线表示`
import "fmt"

func foo() (string, string) {
	return "apple", "banana"
}

func main() {
	x, _ := foo()
	fmt.Println(x)
}

2.1.5 注意事项

Go语言在函数中定义的变量必须要进行赋值。
在全局变量中可以不被使用和赋值
同一个作用域不能对同一个变量重复声明

2.2 常量

常量定义后在程序运行期间无法修改

2.2.1 单独创建

const 变量名 = 值

2.2.2 批量创建

const (
    status = 200
    notFound = 404
)

2.2.3 默认值

const (
   n1 = 100
   n2
   n3
)
// n2、n3默认也是100

2.3 iota

iota 是go语言的常量计数器,只能在常量的表达式中使用
iota在const关键字出现时将被重置为0,const中每新增一行常量声明将使iota计数一次,一般多用于枚举
const (
  a1 = iota //0
  a2        //1
  a3        //2
)

2.3.1 常见的事例

const (
  b1 = iota //0
  b2        //1
  -         //2
  b3        //3
)

const (
  c1 = iota //0
  c2 = 100  //100
  c3 = iota //2 每新增一行iota +1
  c4        //3
)
`多个常量声明在一行`
const (
  d1, d2 = iota + 1, iota + 2 //d1=1,d2=2
  d3, d4 = iota + 1, iota + 2 //d3=2,d4=3
)
`定义数量集`
const (
   _ = iota
  KB = 1 >> (10 * iota) //2的10次方
  MB = 1 >> (10 * iota) //2的20次方
  GB = 1 >> (10 * iota) //2的30次方
  TB = 1 >> (10 * iota) //2的40次方
  PB = 1 >> (10 * iota) //2的50次方
)