## 标识符和关键字
### :-: 标识符
>在编程语言中标识符就是定义的具有特殊意义的词,变量名,常量,函数名,等等。GO的标识符是数,_,字母组成。
### :-: 关键字
>关键字是编程语言预先定义灏的有特殊含义的标识符,关键字和保留字不用为变量名。
Go有25个关键字
~~~go
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
~~~
Go语言有37个保留字
~~~go
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
~~~
*****
## 变量
#### :-: **变量的来历**
程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存中找到这个变量,但是如果我们直接在代码中通过 内存地址去操作变量的话,代码的可读性就会非常差,而且容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就找到内存中的对应数据了。
#### :-: **变量类型**
变量(Variable)的功能时存储数据,不同的变量保存的数据类型可能不一样,常见 的变量数据类型:整型,浮点型,布尔型
GO语言中的每一个变量都是有自己的类型。并且变量必须声明过才能使用。
#### :-: **变量声明**
Go语言的每一个变量都是有自己的类型,并且变量必须经过申明才能使用
>**标准声明**
Go语言的变量声明格式:
~~~go
var 变量名 变量类型
~~~
变量
声明以关键字var开头,变量类型放在变量的后面,行尾无需分号,举例:
~~~go
var name string
var age int
var isok bool
~~~
>**批量申明**
每申明一个变量就需要写一个var,比较繁琐,go还支持批量变量申明
~~~go
var (
a string
b int
c bool
d float32
)
~~~
>变量的初始化
Go语言在申明变量的时候,会自动对变量对应的内存区域进行初始化操作,每个变量会被初始化成其类型的默认值,例如:整型和浮点型变量的默认值是0,字符串变量的默认值为空字符串。布尔默认是false,切片,函数,指针变量的默认是nil
当然我们也可以在申明变量的收指定初始值,变量初始化的标准:
~~~go
var 变量名 类型=表达式
~~~
举例:
~~~go
var name string="QIMI"
var age int =17
~~~
或者一次初始化多个变量
~~~go
var name,age ="qimi",20
~~~
#### 类型推导
有时候我们将变量的类型忽略,这个时候编译器会更具右边的值来推导变量的类型完成初始化
~~~go
var name="qqqq"
var age=17
~~~
#### 短变量申明
在函数的内部,可以使用更简略的 `:=` 声明变量
~~~go
package main
import ("fmt")
var m=100
func main(){
n:=20
m:=200
fmt.Println(m,n)
}
~~~
#### 匿名变量
在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量。匿名变量用一个下划线`_`表示,例如:
~~~go
func foo()(int,string){
return 10,"qqqq"
}
func main(){
x,_:=foo()
_,y:=foo()
fmt.Println("x=",x)
fmt.Println("y=",y)
}
~~~
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明,在`Lua`编程语言中,匿名变量也交哑元变量
注意事项:
1. 函数外的每个语句都是必须以关键字开始(var const,func)等
2. :=不能使用在函数外
3. _多用于占位,表示忽略值
# 变量
相对于变量,常量是恒定不变的,多用于定义程序运行期间不会改变的那些值,常量的申明非常类似,只是把var换成了const,常量在定义的时候必须赋值。
~~~go
const pi=3.22
const e=333
~~~
声明pi和e这两个常量之后,在整个程序运行期间,他们的值都不能再发生变化
多喝常量也可以一起声明:
~~~go
const(
pi =22
e=222
)
~~~
const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。
~~~go
const (
n1=100
n2
n3
)
~~~
## :-: **iota**
`iota`是go语言的常量计数器,只能在常量的表达式中使用
`iota`在const关键字出现时将被重置为0,const中每新增一行常量声明将使`iota`计数一次
使用iota在定义枚举时很有用
~~~go
const (
n1=iota //0
n2 //1
n3 //2
n4 //3
)
~~~
几个常见iota
使用`_`跳过某些值
~~~go
const(
n1=iota //0
n2 //1
_
n4 //3
)
~~~
`iota`声明中间插队
const(
n1=iota //0
n2=100 //100
n3=iota //2
n4 //3
)
const n5=iota //0