Go語(yǔ)言基礎(chǔ)語(yǔ)法總結(jié)
一 變量
-
變量定義
-
1.1 使用var關(guān)鍵字
var a bool
var a bool = true
1.2 不指定類型直接初始化讓編譯器選擇
var a = "abc"
1.3 使用 “ := "定義變量,可省略var關(guān)鍵字,如 a:="abc"
- notes:
變量賦值只能在函數(shù)內(nèi)使用愚臀,故第三種方式只能在函數(shù)內(nèi)使用
可使用var()同時(shí)定義多個(gè)變量
Go的類型在變量名之后
-
二 內(nèi)置基本類型
-
基本類型:
bool
數(shù)字類型:int, uint, uintptr, float32, float64, complex64, complex128, rune(相當(dāng)于char)
類型轉(zhuǎn)換:Go不會(huì)自動(dòng)轉(zhuǎn)換類型,當(dāng)類型不同時(shí)需要手動(dòng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換
三 常量
定義:const 斥黑,常量名無(wú)需大寫吃度,Go中大寫表示public 姐霍,例:const a = "acb"
const + 數(shù)值悉盆,例如const a = 0 盯荤,a可以與int、float類型的數(shù)據(jù)直接運(yùn)算而無(wú)需強(qiáng)制類型轉(zhuǎn)換
-
枚舉類型:(目前使用的不多焕盟,之后再補(bǔ)充)
普通枚舉類型
自增值枚舉類型
四 條件語(yǔ)句
-
switch
不需要break
使用fallthrough關(guān)鍵字會(huì)無(wú)條件執(zhí)行下一條語(yǔ)句
switch后可以沒(méi)有語(yǔ)句或跟多個(gè)語(yǔ)句
-
if
條件語(yǔ)句不需要括號(hào)
可以在條件語(yǔ)句中定義變量并賦值,不同語(yǔ)句間用宏粤;隔開(kāi)
在條件語(yǔ)句中定義的變量作用域只在if語(yǔ)句中
五 循環(huán)語(yǔ)句
-
for
不加條件 -> 死循環(huán)
不加初始條件 -> 相當(dāng)于while循環(huán) (故Go中沒(méi)有while循環(huán))
for經(jīng)常配合range使用
六 函數(shù)
定義: func func_name(parm ) return_type{}
Go中函數(shù)可返回多個(gè)值脚翘,并可以對(duì)多個(gè)值進(jìn)行命名。實(shí)際應(yīng)用中一般返回一個(gè)值和一個(gè)提示信息(fmt.Error())
默認(rèn)為值傳遞
可變參數(shù)列表:在類型前使用” ...“ 表示可變參數(shù)列表绍哎,如(...int)
-
高級(jí)應(yīng)用:
函數(shù)作為值:函數(shù)定義后作為值使用
閉包:匿名函數(shù)来农,在動(dòng)態(tài)編程中使用
七 指針
- Go中的指針較C的指針更為簡(jiǎn)單,指針不能進(jìn)行運(yùn)算
八 內(nèi)置容器
-
數(shù)組
數(shù)組是值類型崇堰,傳參會(huì)拷貝數(shù)組
若需要改變數(shù)組的值沃于,則參數(shù)需為數(shù)組的指針
-
切片(slice)
slice是數(shù)組的抽象涩咖,指向原數(shù)組的地址,改變slice中的值會(huì)改變數(shù)組的值繁莹,函數(shù)傳參使用slice可以避免使用數(shù)組指針
len與capacity: len是數(shù)組的長(zhǎng)度檩互;capacity是數(shù)組的容量
索引不可以超過(guò)len;
每次cap改變的時(shí)候指向array內(nèi)存的指針都在變化。當(dāng)在使用 append 的時(shí)候咨演,如果 cap==len 了這個(gè)時(shí)候就會(huì)新開(kāi)辟一塊更大內(nèi)存闸昨,然后把之前的數(shù)據(jù)復(fù)制過(guò)去。
-
Map
接收時(shí)可以接收第二個(gè)參數(shù)判斷key是否存在
除了slice, map, func外所有自建類型都可以作為key
struct不包含上訴類型也可以作為key
字符串(待補(bǔ)充)
- 僅記錄了自己不太熟悉的特性薄风,歡迎補(bǔ)充 *
更多Go的相關(guān)文章發(fā)布在我的個(gè)人博客上饵较,歡迎訪問(wèn)
www.guiguiyo.cn