变量和常量

变量用来保存会变化的数据,常量用来保存不会变化的数据。

一、声明变量

package main

import "fmt"

func main() {
	var name string = "张三"
	var age int = 18

	fmt.Println(name, age)
}

写法:

var 变量名 类型 =

二、自动推断类型

Go 可以根据右边的值推断类型:

var name = "张三"
var age = 18

这两个变量分别会被推断成:

变量类型
namestring
ageint

三、短变量声明

函数内部最常用的是 :=

func main() {
	name := "张三"
	age := 18

	fmt.Println(name, age)
}

注意::= 只能在函数内部使用。

包级变量不能这样写:

// 错误:包级不能用 :=
name := "张三"

包级变量要用:

var name = "张三"

四、零值

变量声明后不赋值,会得到对应类型的零值。

package main

import "fmt"

func main() {
	var name string
	var age int
	var ok bool

	fmt.Println(name) // 空字符串
	fmt.Println(age)  // 0
	fmt.Println(ok)   // false
}

常见零值:

类型零值
string""
int0
float640
boolfalse
指针、切片、map、函数、接口nil

五、声明多个变量

var (
	name = "张三"
	age  = 18
	city = "杭州"
)

也可以在函数里写:

name, age := "张三", 18

六、常量

const AppName = "用户系统"
const MaxPageSize = 100

常量不能被重新赋值:

const MaxPageSize = 100

// 错误:常量不能修改
MaxPageSize = 200

七、命名习惯

Go 里名字大小写有特殊含义:

写法含义
name包内可见
Name包外可见,相当于导出

例如:

const appName = "内部使用"
const AppName = "外部包可以使用"

初学阶段先记住:如果一个变量、函数、结构体字段要给别的包用,首字母大写。