1 基本語法
-
Go程序由多個標(biāo)記組成:關(guān)鍵字莲趣,標(biāo)識符,常量饱溢,字符串喧伞,符號
- 如:fmt.Println("Hello, world!")
行分隔符:一行結(jié)束代表一個語句結(jié)束,不需要绩郎;結(jié)尾
注釋:單行注釋 // 內(nèi)容 塊注釋 /* 內(nèi)容 */
標(biāo)識符:用來命名變量潘鲫、類型等程序?qū)嶓w, 由一個或?qū)@個字母數(shù)字下劃線組成的序列肋杖,第一個字符必須是字母或者下劃線溉仑,不能是數(shù)字或者關(guān)鍵字
字符串連接 :使用 + 連接
格式化字符串:fmt.Sprintf 格式化字符串并賦值給新串,%d 代表整型數(shù)字状植,%s表示字符串
2 語言數(shù)據(jù)類型
1. 布爾型:true浊竟、false
2. 數(shù)字類型(uint8怨喘、uint16、uint32振定、uint64必怜、int8、int16后频、int32梳庆、int64、float32徘郭、float64靠益、complex64、complex128残揉、byte胧后、rune、uint抱环、int壳快、uintptr)
3. 字符串類型:字符串字節(jié)使用UTF-8編碼標(biāo)識Unicode文本
4. 派生類型:(指針Pointer、數(shù)字镇草、結(jié)構(gòu)化struct眶痰、Channel、函數(shù)梯啤、切片竖伯、接口interface、Map)
3 語言變量
-
變量聲明:
- 指定變量聲明: var a int
- 根據(jù)值自行判定變量類型 var a = 1
- 省略var因宇, a :=1 (a必須是一個未聲明過的新變量)
多變量聲明: var a, b, c = 1, 2, 3 或者 a, b, c := 1, 2, 3
-
聲明全局變量
var (
a int
b bool
)
4 常量
- 常量的定義格式:
- const a string = 'a'
- const a = 'a'
- const a, b = 1, 2
- 特殊常量:iota七婴,可以被編輯器修改的常量
- 在const關(guān)鍵字出現(xiàn)時,將被重置為0(const內(nèi)部的第一行之前)察滑,const每新增一行常量聲明將使iota家屬一次(可以理解為是const語句塊的行所以)
5 運算符
- 算數(shù)運算符: + 打厘、-、*贺辰、/户盯、%、++饲化、--
- 關(guān)系運算符:==莽鸭、!=、>吃靠、<蒋川、>=、<=
- 邏輯運算符:&&撩笆、||捺球、!
- 位運算符:&缸浦、 |、 ^
- 賦值運算符:=氮兵、+=裂逐、-=、*=泣栈、/=卜高、%=、<<=南片、 >>=掺涛、 &=、 ^=疼进、 |=
- 其他運算符:&(返回變量存儲地址)薪缆、*(指針變量)
6 循環(huán)語句
-
條件語句:if、switch伞广、select
if a > 1 { ... } else { ... } switch a { case 10: ... case 20: ... default: ...; }
- 循環(huán)類型:for循環(huán)
for init;condition;post{}
for condition { }
for { }
- 循環(huán)控制:break拣帽、continue、goto
7 函數(shù)
-
定義:
fun function_name (a, b, c) return_types {
}
return_types: string 或者 (string, string)
調(diào)用:function_name (a, b ,c int)
-
函數(shù)返回值:可以是單個嚼锄、也可以是多個值
- return a
- return a, b
8 數(shù)組
-
聲明數(shù)組:
1. var a [3] float32 (含義:定義數(shù)組a長度為3,類型為float32) 2. var a = [3]float32{1, 2, 3} 3. a := [3]float32{1, 2, 3} 4. a := [...]float32{1, 2, 3} (不確定數(shù)組長度使用...) 5. a := [5]float32{1:2.0,3:7.0} (1,3元素初始化)
二維數(shù)組
a := [2][3] int { {0, 1, 2}, {3, 4, 5}, }
9 指針
- 聲明指針:var a *int
- 使用:
var b *int
var a int = 20
b = &a
- 空指針:當(dāng)指針被定義但未分配給任何變量是减拭。它的值未為nil,nil指針被稱為空指針
- 一個指針變量通城螅縮寫未ptr
- 空指針判斷: ptr == nil
10 結(jié)構(gòu)體
1. 含義:數(shù)組可以存儲統(tǒng)一類型的數(shù)據(jù)拧粪,結(jié)構(gòu)體可以為不同項定義不同的數(shù)據(jù)類型;它是有一系列具有相同類型或者不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合
2. 使用
定義結(jié)構(gòu)體:
type struct_variable_type struct {
member definition
member definition
}
變量聲明語法:
variable_name := structure_variable_type {value1, value2...valuen}
或
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}
訪問:
structure_variable_type.key1
- 結(jié)構(gòu)體作為函數(shù)參數(shù)