go lang学习笔记 7 - 变量声明
1060
|
2021-12-14 17:56:00
标识符
在编程语言中具有特殊特殊意义的词,比如变量名,常量名,函数名等等。Go 语言中标识符由 字母、数字和下划线组成,并且只能以字母和 _
开头
关键字
在编程语言中预定义的具有特殊含义的标识符。关键字和保留字都不建议用作变量名
Go 语言中的 25 个关键字
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrougt | if | range | type |
continue | for | import | return | var |
37个保留字
Constants: true false into ail
Types: int int8 int16 int64
uint uint8 uint32 uint64 uintptr
float32 float64 complex128 coplex64
bool byte rune string error
Functions: make len cap new append copy close delete
complex real imag
panic recover
变量
Go 推荐变量命名方式为
驼峰式命名
第一单词首字母小写
变量来历
程序在运行中的数据都是存储在内存中,为了方便在内存中操作变量,就有了变量
变量的声明
必须先声明再使用,且 非全局变量
声明之后必须使用
同一个作用域中不可重复声明同名变量
标准声明
var name type
关键字 var, 变量名 name, 变量类型 type
批量声明
var (
a string
b int
c bool
)
变量的初始化
func func1() {
a = "John"
b = 18
c = true
//变量声明之后必须使用,否则无法通过编译
fmt.Printf("name: %s, age: %d, is student: %t\n", a, b, c)
}
声明并赋值
var str string = "hello world"
类型推导
根据变量值识别类型
var str = "hello world"
简短变量声明
只能在函数中使用,不能指定变量类型,是类型推导的简写
str := "hello world"
//指定类型
i1 := int8(9)
str1 := string("hello world")
推荐: 全局变量使用批量声明,函数中使用简短申明
匿名变量
函数可以返回多个值,当不需要使用其中一个变量时可以使用匿名变量,多用于占位
匿名变量不占用命名空间,
不占用内存
func foo() (int, string) {
return 10, "Mark"
}
func main() {
x, _ = foo()
_, y = foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}
常量
常量的值恒定不变,例如错误码,状态码,通常定义在全局
声明
使用关键字 const
类型可以省略
在声明时必须给值,且声明之后不能再更改值
const pi float32 = 3.1415926
const (
httpOk int = 200
httpMiss int = 404
)
在批量声明常量时,如果第二行开始某一行没有赋值,则默认等于上一行的值
此方式未赋值的常量不能指定类型
const (
num1 = 100
num2 //没有赋值,默认等于上一行
num3 int // 错误,不可指定类型
)
iota
iota
是 go 语言的常量计数器,只能在常量的表达式中使用
iota
在 const
关键词出现时被置为 0
。 const
中 每增加一行常量声明
使 iota
计数一次, 可以理解它为 const
语句块中的行索引。使用 iota
能简化定义,在定义枚举时很有用
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)
常见的 iota 示例
const (
a1 = iota //0
a2 //1
_
a3 //3
)
const (
b1 = iota //0
b2 = 100 //100
b3 //100
b4 //100
)
const (
c1 = 100 //100
c2 = iota //1
c3 //2
c4 //3
)
const (
d1, d2, d3 = iota + 1, iota + 2, iota + 1 //1, 2, 1 解析: 此时 iota = 0
// 空行不算
d4, d5 = iota + 1, iota + 2 //2, 3 解析: iota = 1
d6, d7 //3, 4 解析: iota = 2, d6 = iota + 1, d7 = iota + 2
d8 //错误,个数要和上面一样
)
定义数量级
const (
_ = iota
KB = 1 << (10 * iota) //二进制数,1左移10位 即 10000000000 即 十进制数 1024
MB //左移20位
GB
TB
PB
)
左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。