变量和常量的声明

Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明。

一个Go语言编写的程序对应一个或多个以.go为文件后缀名的源文件。

每个源文件中以包的声明语句开始,说明该源文件是属于哪个包。

包声明语句之后是import语句导入依赖的其它包,然后是包一级的类型、变量、常量、函数的声明语句,包一级的各种类型的声明语句的顺序无关紧要

函数内部的名字则必须先声明之后才能使用。

命名

Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则:

一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线。

大写字母和小写字母是不同的名字。

Go语言中有25个关键字:

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

37个保留字:

Constants:    true  false  iota  nil

Types:    	int  int8  int16  int32  int64  
          	uint  uint8  uint16  uint32  uint64  uintptr
          	float32  float64  complex128  complex64
          	bool  byte  rune  string  error

Functions:   make  len  cap  new  append  copy  close  delete
             complex  real  imag
             panic  recover

在习惯上,Go语言程序员推荐使用 驼峰式 命名,当名字由几个单词组成时优先使用大小写分隔,而不是优先用下划线分隔。

变量声明

常见变量的数据类型有:整型、浮点型、布尔型等。

Go中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。

Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用,而且声明后必须使用。

标准声明

关键字 var开头,变量类型放在变量的后面,行尾无需分号。

var intA int = 100
var floatA float32  = 100.10

批量声明

var (
    a int = 100
    b bool = true
    c float32 = 20.2
)

类型推导

即声明时初始化,可以推导出类型

var intA = 100
var floatA  = 100.10

简短声明

在函数内部,可以使用更简略的 := 方式声明并初始化变量。

func main() {
    a := 100
    b := 200 
    fmt.Println(a, b)
}

tip

:=不能使用在函数外。

函数外的每个语句都必须以关键字开始(var、const、func等)

变量初始化

Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。

每个变量会被初始化成其类型的默认值,例如:

  • 整型和浮点型变量的默认值为 0
  • 字符串变量的默认值为 空字符串
  • 布尔型变量默认为 false
  • 切片、函数、指针变量的默认为 nil

匿名变量

在使用多重赋值时,如果想要忽略某个值,可以使用 匿名变量(anonymous variable)
匿名变量用一个下划线 _表示,例如:

func foo() (int, string) {
	return 10, "Q1mi"
}
func main() {
	x, _ := foo()
	_, y := foo()
	fmt.Println("x=", x)
	fmt.Println("y=", y)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。

常量声明

常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。

使用 const 声明常量 ,常量在定义的时候必须赋值。

const pi = 3.1415
const e = 2.7182
// 或
const (
    pi = 3.1415
    e = 2.7182
)

const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。

例如:

const (
    n1 = 100
    n2
    n3
)

iota

iota是go语言的常量计数器,只能在常量的表达式中使用。

iota在const关键字出现时将被重置为0。

const中每新增一行常量声明将使 iota计数一次

const (
    n1 = iota //0
    n2        //1
    n3        //2
    n4        //3
)