1、關鍵字
go一共有25個關鍵字
- var和const :變量和常量的聲明
- var varName type 或者 varName : = value
- package and import: 導入
- func: 用於定義函數和方法
- return :用於從函數返回
- defer someCode :在函數退出之前執行
- go : 用於並行
- select 用於選擇不同類型的通訊
- interface 用於定義接口
- struct 用於定義抽象數據類型
- break、case、continue、for、fallthrough、else、if、switch、goto、default 流程控制
- chan用於channel通訊
- type用於聲明自定義類型
- map用於聲明map類型數據
- range用於讀取slice、map、channel數據
2、標識符
36個標識符
內建常量:true、false、iota、nil
內建類型:int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64、uintptr、float32、
float64、complex64、complex128、bool、byte、rune、string、error
內建函數:make、len、cap、new、append、copy、delete、complex、real、imag、panic、recover
函數內部定義的標識符,只能在函數內部訪問。函數外部包括函數自身和自定義定義標識符,若首字母大寫,則可以被外部包和所在的包內訪問(即:類似於C語言public);若首字母小寫,則不能被外部包所訪問,只能坐在包內訪問。(即:類似於C語言private)程序由標識符、運算符、分隔符和各種標識符號最終組成。
3、註釋
單行 //
多行 /* ... */
4、基礎語法
一、package
- package是最基本的分發單位和工程依賴關係的體現
- 每個go文件開頭都必須要一個package聲明,表示源碼所在的包
- 要生成go語言可執行文件,必須要有main的package包,且包下必須有main()函數
- 同一個路徑下只能存在一個package,一個package可以拆成多個源文件
二、import
- import語句可以導入源代碼文件所依賴的package包
- 不能導入沒用到的 package,會報錯
原理:
1、一個main導入多個包,包將被順序導入
2、如果導入的包(包A)依賴其他包(包B),會先導入包B,初始化包B的變量和常量,調用init();再導入包A,重複以上動作,直到所有包都初始化完成,纔會初始化main,執行main函數
3、以上過程中,如果一個包被導入多次,只會初始化一次
別名:
1、可以將導入的包設一個方便記憶的別名
2、點(.) 別名的包,使用其函數時,可以不寫包名
3、下劃線(_) 別名的包,只會調用其init()方法,不能調用其函數
三、基本數據類型
1、整型:int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64
2、浮點型:float32、float64
3、複數:complex64、complex128
4、字符型:rune(爲整型),打印時需要轉爲string
5、指針:uintptr
6、字符串:string,默認爲utf-8格式
四、變量
1、Go 語言變量名由字母、數字、下劃線組成,其中首個字母不能爲數字。
聲明方式:
- 指定變量類型 var v_name v_type = value
- 根據值自行判斷 var v_name = value
- 省略var, 注意 :=左側的變量不應該是已經聲明過的,否則會導致編譯錯誤。 v_name := value
//類型相同多個變量, 非全局變量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要顯示聲明類型,自動推斷
vname1, vname2, vname3 := v1, v2, v3 //出現在:=左側的變量不應該是已經被聲明過的,否則會導致編譯錯誤
// 這種因式分解關鍵字的寫法一般用於聲明全局變量
var (
vname1 v_type1
vname2 v_type2
)
五、常量
常量是一個簡單值的標識符,在程序運行時,不會被修改的量。
常量中的數據類型只可以是布爾型、數字型(整數型、浮點型和複數)和字符串型。
常量可以用len(), cap(), unsafe.Sizeof()函數計算表達式的值。常量表達式中,函數必須是內置函數,否則編譯不過:
常量的數值可以當做任何數據類型來使用
聲明方式:同上
特殊常量:iota
1、iota只能在常量的表達式中使用。
2、每次 const 出現時,都會讓 iota 初始化爲0.
3、iota 在下一行增長,而不是立即取得它的引用。增長是按行數