## 標識符和關鍵字
### :-: 標識符
>在編程語言中標識符就是定義的具有特殊意義的詞,變量名,常量,函數名,等等。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