第一章 go語言
-
語言特性
- 開放源代碼
- 靜態(tài)類型和編譯型
- 跨平臺
- 自動垃圾回收
- 原生的并發(fā)編程
- 完善的構(gòu)建工具
- 多編程范式
- 代碼風(fēng)格強(qiáng)制統(tǒng)一
- 高效的編程和運(yùn)行
- 豐富的標(biāo)準(zhǔn)庫
-
安裝和設(shè)置
- API文件夾:依照GO版本順序的API增量列表文件
- bin文件夾:主要的標(biāo)準(zhǔn)命令文件,包括(go/godoc/gofmt)
- blog文件夾:官方博客文章
- lib文件夾:特殊庫文件
- misc文件夾:輔助類的說明和工具
- pkg文件夾:安裝Go標(biāo)準(zhǔn)庫后的所有歸檔文件
- src文件夾:存放Go自身、Go標(biāo)準(zhǔn)工具以及標(biāo)準(zhǔn)庫的所有源碼文件
- test文件夾:測試和驗(yàn)證Go本身的所有相關(guān)文件
-
工程結(jié)構(gòu)
- src目錄:用于以代碼包的形式組織并保存Go源碼文件
- pkg目錄:用于存放通過go install命令安裝后的代碼包的歸檔文件
- bin目錄:保存由Go命令源碼文件生成的可執(zhí)行文件
-
標(biāo)準(zhǔn)命令簡述
- go工具包子命令
build :編譯指定Go語言源碼文件
cleam :清除執(zhí)行g(shù)o命令遺留下來的臨時目錄和文件
doc :Go語言代碼包以及程序?qū)嶓w文檔
env :打印GO語言相關(guān)的環(huán)境信息
fix :修正指定代碼包的源碼文件和包含的過時語法和代碼調(diào)用
fmt :格式化指定代碼包中的GO源碼文件
generate :識別指定代碼包中源碼文件的go:generate注釋
get :用于下載、編譯并安裝指定的代碼包及依賴包
install :編譯并安裝指定的代碼包及其依賴包
list :顯示指定代碼包的信息
run :編譯并運(yùn)行指定的命令源碼文件
test :測試指定的代碼包
tool :運(yùn)行Go語言的特殊工具
vet :檢查指定代碼包中的Go語言源碼
version :顯示當(dāng)前安裝的GO語言的版本信息及計算環(huán)境
tool pprof:用于以交互的方式訪問一些性能概要文件
tool trace:用于讀取Go程序蹤跡文件,并以圖形化的方式展示出來
- go程序示例
package main
import(
“bufio”
“fmt”
“os”
)
func main(){
inputReader :=bufio.NewReader(os.Stdin)
fmt.Println("Please input your name :")
input,err :=inputReader.ReadString('\n')
if err !=nil {
fmt.Printf("Found an error :%\n",err)
}else{
input = input[:len(input)-1]
fmt.Prinf("Hello,%s!\n",input)
}
}
第二章 語法概覽
類別 | 關(guān)鍵字
--------|--------
程序申明 | import和packege
程序?qū)嶓w聲明和定義 | chan/const/func/interface/map/struct/type/var
程序流程控制 | go/select/break/case/continue/default/defer/else/fallthrough/for/goto/if/range/return/switch
- 字面量
1. 用于表示基礎(chǔ)數(shù)據(jù)類型值的各種字面量
2. 用于構(gòu)造各種自定義的符合數(shù)據(jù)類型的類型的類型字面量
3. 用于表示復(fù)合數(shù)據(jù)類型的值的復(fù)合字面量
- 操作符
~~重點(diǎn):操作符優(yōu)先級~~
- 表達(dá)式
示例:
```
var i1 I1
var ok bool
i1,ok = interface{}(v1)(I1)
簡寫:i1,ok := interface{}(v1)(I1)
```
基本類型
```
const DEFAULT_IP_string = "192.168.0.1"
const DEFAULT_PORT int = 9001
簡寫:
const(
DEFAULT_IP_string = "192.168.0.1"
DEFAULT_PORT int = 9001
)
```
-
高級類型
-接口
-
流程控制
1. 沒有do 和 while循環(huán),只有一個更廣義的for語句
2. switch語句靈活多變,還可以用于類型判斷
3. if語句和switch語句都可以包含一條初始化子語句
4. break語句和continue語句可以后跟一條標(biāo)簽(label)語句,以標(biāo)識需要終止或繼續(xù)的代碼塊
5. defer語句可以使我們更加方便的執(zhí)行異常捕獲和資源回收人物
6. select語句也用于多分之選擇,但只與通道配合使用
7. go語句用于異步啟用goroutine并執(zhí)行指定函數(shù)
- 代碼塊和作用域
package main
import(
"fmt"
)
var v = "1,2,3"
func main(){
v := []int{1,2,3}
if v != 123
fmt.Printf("%v\n",v)
}
}
- if語句/switch語句/for語句/range子句/defer語句/panic和recover
第三章 并發(fā)編程綜述
并發(fā)編程基礎(chǔ)
多進(jìn)程編程
多線程編程
多線程與多進(jìn)程
多核時代的并發(fā)編程
第四章 go的并發(fā)機(jī)制
第五章 同步
第六章 網(wǎng)絡(luò)爬蟲框架設(shè)計和實(shí)現(xiàn)
網(wǎng)絡(luò)爬蟲與框架
功能需求與分析
總體設(shè)計
詳細(xì)設(shè)計
工具的實(shí)現(xiàn)
組件的實(shí)現(xiàn)
調(diào)度器的實(shí)現(xiàn)
簡單圖片爬蟲
擴(kuò)展與思路
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。