1. 变量基础
1.1 变量类型
Go语言的基本类型有:
- bool
- string
- int、int8、int16、int32、int64
- uint、uint8、uint16、uint32、uint64、uintptr
- byte // uint8 的别名
- rune // int32 的别名 代表一个 Unicode 码
- float32、float64
- complex64、complex128
1.2 变量声明
- 标准格式:
var 变量名 变量类型 变量声明以关键字 var 开头,后置变量类型,行尾无须分号
- 批量格式
var (
a int
b string
c []float32
d func() bool
e struct {
x int
}
)
使用关键字 var 和括号,可以将一组变量定义放在一起
- 简短格式 除 var 关键字外,还可使用更加简短的变量定义和初始化语法。
变量名 := 表达式 需要注意的是,简短模式有以下限制:
- 定义变量,同时显式初始化。
- 不能提供数据类型。
- 只能用在函数内部。 和 var 形式声明语句一样,简短变量声明语句也可以用来声明和初始化一组变量:
func main() {
x:=100
a,s:=1, "abc"
}
1.3 变量初始化
声明变量时,自动对变量对应的内存区域进行初始化操作。每个变量会初始化其类型的默认值,例如:
- 整型和浮点型变量的默认值为 0 和 0.0。
- 字符串变量的默认值为空字符串。
- 布尔型变量默认为 bool。
- 切片、函数、指针变量的默认为 nil。
1.变量初始化的标准格式
var 变量名 类型 = 表达式
var hp int = 100
hp 为变量名,类型为 int,hp 的初始值为 100
2.类型推导
有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化
var hp = 100
右值为整型,hp变量的类型为int
3.短变量声明并初始化
var 的变量声明还有一种更为精简的写法:
hp := 100 这是Go语言的推导声明写法,编译器会自动根据右值类型推断出左值的对应类型。
注意:由于使用了 :=,而不是赋值的 =,因此推导声明写法的左值变量必须是没有定义过的变量
4.匿名变量
在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量。 匿名变量用一个下划线_表示,例如:
func GetValue() (int, int) {
return 10, 20
}
func main() {
x, _ := GetValue()
_, y := GetValue()
}
2. 常量基础
Go语言中的常量使用关键字 const 定义,用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型。由于编译时的限制,定义常量的表达式必须为能被编译器求值的常量表达式
常量的定义格式和变量的声明语法类似:
const name [type] = value
- 显式类型定义: const b string = "abc"
- 隐式类型定义: const b = "abc" 批量声明多个常量:
const (
e = 2.7182818
pi = 3.1415926
)
const同时声明多个常量时,如果省略了值则表示和上面一行的值相同
const (
a = 1
b
c = 2
d
)
fmt.Println(a, b, c, d) // "1 1 2 2"
3. iota 常量生成器
常量声明可以使用 iota 常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。在一个 const 声明语句中,在第一个声明的常量所在的行,iota 将会被置为 0,然后在每一个有常量声明的行加一
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)