如何入門(mén)Go語(yǔ)言?這個(gè)開(kāi)源項(xiàng)目趕緊收藏!

昨天小編給大家分享了一款基于Go語(yǔ)言的對(duì)象存儲(chǔ)服務(wù)MinIO(自己搭建個(gè)對(duì)象存儲(chǔ)服務(wù)難不難?),不少小伙伴表示受益匪淺,但是同時(shí)呢,也有一部分小伙伴,說(shuō)自己對(duì)于Go語(yǔ)言不是特別熟悉,想入手有那么一丟丟的困難~
嗯嗯就那么一丟丟的意思
不過(guò)呢這也難怪,國(guó)內(nèi)似乎還沒(méi)有特別出色的適合初學(xué)者的Go語(yǔ)言教程書(shū)籍,而國(guó)外雖然有不少優(yōu)秀的書(shū)籍,但是因?yàn)檎Z(yǔ)言的關(guān)系勸退了不少愛(ài)好者,但這不妨要我們對(duì)這些國(guó)外書(shū)籍的認(rèn)識(shí)。
這其中呢,Ivo Balbaert的The Way To Go一直被認(rèn)為是Go語(yǔ)言學(xué)習(xí)的佼佼者,雖然作為較早的系列書(shū)籍,有一些些內(nèi)容可能因?yàn)榘姹靖乱呀?jīng)過(guò)時(shí),但是就像那句老話,經(jīng)典的才是最好的,整本書(shū)還是值得一看的。
不過(guò)呢,先不說(shuō)這語(yǔ)言的問(wèn)題,就看看這個(gè)價(jià)格,也讓不少人打退堂鼓。


但是程序猿的圈子里總有那么多熱心腸的樂(lè)于分享的技術(shù)大牛,江湖俗稱(chēng)大好人~今天小編就找到一個(gè)開(kāi)源項(xiàng)目,此項(xiàng)目就是對(duì)于這本The Way To Go的翻譯及分享。

難能可貴的是這次翻譯獲得了Ivo Balbaert(就是寫(xiě)這本書(shū)的大大)的授權(quán)同意,所以大家可以放心的看,同時(shí)對(duì)于前文提到的一些過(guò)時(shí)的內(nèi)容,也進(jìn)行了一些經(jīng)Ivo Balbaert同意之下的補(bǔ)充。
整本翻譯包含19個(gè)章節(jié),分別是:
第1章:Go 語(yǔ)言的起源,發(fā)展與普及 1.1 起源與發(fā)展 1.2 語(yǔ)言的主要特性與發(fā)展的環(huán)境和影響因素 第2章:安裝與運(yùn)行環(huán)境 2.1 平臺(tái)與架構(gòu) 2.2 Go 環(huán)境變量 2.3 在 Linux 上安裝 Go 2.4 在 Mac OS X 上安裝 Go 2.5 在 Windows 上安裝 Go 2.6 安裝目錄清單 2.7 Go 運(yùn)行時(shí)(runtime) 2.8 Go 解釋器 第3章:編輯器、集成開(kāi)發(fā)環(huán)境與其它工具 3.1 Go 開(kāi)發(fā)環(huán)境的基本要求 3.2 編輯器和集成開(kāi)發(fā)環(huán)境 3.3 調(diào)試器 3.4 構(gòu)建并運(yùn)行 Go 程序 3.5 格式化代碼 3.6 生成代碼文檔 3.7 其它工具 3.8 Go 性能說(shuō)明 3.9 與其它語(yǔ)言進(jìn)行交互 第4章:基本結(jié)構(gòu)和基本數(shù)據(jù)類(lèi)型 4.1 文件名、關(guān)鍵字與標(biāo)識(shí)符 4.2 Go 程序的基本結(jié)構(gòu)和要素 4.3 常量 4.4 變量 4.5 基本類(lèi)型和運(yùn)算符 4.6 字符串 4.7 strings 和 strconv 包 4.8 時(shí)間和日期 4.9 指針 第5章:控制結(jié)構(gòu) 5.1 if-else 結(jié)構(gòu) 5.2 測(cè)試多返回值函數(shù)的錯(cuò)誤 5.3 switch 結(jié)構(gòu) 5.4 for 結(jié)構(gòu) 5.5 Break 與 continue 5.6 標(biāo)簽與 goto 第6章:函數(shù)(function) 6.1 介紹 6.2 函數(shù)參數(shù)與返回值 6.3 傳遞變長(zhǎng)參數(shù) 6.4 defer 和追蹤 6.5 內(nèi)置函數(shù) 6.6 遞歸函數(shù) 6.7 將函數(shù)作為參數(shù) 6.8 閉包 6.9 應(yīng)用閉包:將函數(shù)作為返回值 6.10 使用閉包調(diào)試 6.11 計(jì)算函數(shù)執(zhí)行時(shí)間 6.12 通過(guò)內(nèi)存緩存來(lái)提升性能 第7章:數(shù)組與切片 7.1 聲明和初始化 7.2 切片 7.3 For-range 結(jié)構(gòu) 7.4 切片重組(reslice) 7.5 切片的復(fù)制與追加 7.6 字符串、數(shù)組和切片的應(yīng)用 第8章:Map 8.1 聲明、初始化和 make 8.2 測(cè)試鍵值對(duì)是否存在及刪除元素 8.3 for-range 的配套用法 8.4 map 類(lèi)型的切片 8.5 map 的排序 8.6 將 map 的鍵值對(duì)調(diào) 第9章:包(package) 9.1 標(biāo)準(zhǔn)庫(kù)概述 9.2 regexp 包 9.3 鎖和 sync 包 9.4 精密計(jì)算和 big 包 9.5 自定義包和可見(jiàn)性 9.6 為自定義包使用 godoc 9.7 使用 go install 安裝自定義包 9.8 自定義包的目錄結(jié)構(gòu)、go install 和 go test 9.9 通過(guò) Git 打包和安裝 9.10 Go 的外部包和項(xiàng)目 9.11 在 Go 程序中使用外部庫(kù) 第10章:結(jié)構(gòu)(struct)與方法(method) 10.1 結(jié)構(gòu)體定義 10.2 使用工廠方法創(chuàng)建結(jié)構(gòu)體實(shí)例 10.3 使用自定義包中的結(jié)構(gòu)體 10.4 帶標(biāo)簽的結(jié)構(gòu)體 10.5 匿名字段和內(nèi)嵌結(jié)構(gòu)體 10.6 方法 10.7 類(lèi)型的 String() 方法和格式化描述符 10.8 垃圾回收和 SetFinalizer 第11章:接口(interface)與反射(reflection) 11.1 接口是什么 11.2 接口嵌套接口 11.3 類(lèi)型斷言:如何檢測(cè)和轉(zhuǎn)換接口變量的類(lèi)型 11.4 類(lèi)型判斷:type-switch 11.5 測(cè)試一個(gè)值是否實(shí)現(xiàn)了某個(gè)接口 11.6 使用方法集與接口 11.7 第一個(gè)例子:使用 Sorter 接口排序 11.8 第二個(gè)例子:讀和寫(xiě) 11.9 空接口 11.10 反射包 11.11 Printf 和反射 11.12 接口與動(dòng)態(tài)類(lèi)型 11.13 總結(jié):Go 中的面向?qū)ο?/section> 11.14 結(jié)構(gòu)體、集合和高階函數(shù) 第12章:讀寫(xiě)數(shù)據(jù) 12.1 讀取用戶(hù)的輸入 12.2 文件讀寫(xiě) 12.3 文件拷貝 12.4 從命令行讀取參數(shù) 12.5 用 buffer 讀取文件 12.6 用切片讀寫(xiě)文件 12.7 用 defer 關(guān)閉文件 12.8 使用接口的實(shí)際例子:fmt.Fprintf 12.9 JSON 數(shù)據(jù)格式 12.10 XML 數(shù)據(jù)格式 12.11 用 Gob 傳輸數(shù)據(jù) 12.12 Go 中的密碼學(xué) 第13章:錯(cuò)誤處理與測(cè)試 13.1 錯(cuò)誤處理 13.2 運(yùn)行時(shí)異常和 panic 13.3 從 panic 中恢復(fù)(Recover) 13.4 自定義包中的錯(cuò)誤處理和 panicking 13.5 一種用閉包處理錯(cuò)誤的模式 13.6 啟動(dòng)外部命令和程序 13.7 Go 中的單元測(cè)試和基準(zhǔn)測(cè)試 13.8 測(cè)試的具體例子 13.9 用(測(cè)試數(shù)據(jù))表驅(qū)動(dòng)測(cè)試 13.10 性能調(diào)試:分析并優(yōu)化 Go 程序 第14章:協(xié)程(goroutine)與通道(channel) 14.1 并發(fā)、并行和協(xié)程 14.2 協(xié)程間的信道 14.3 協(xié)程的同步:關(guān)閉通道-測(cè)試阻塞的通道 14.4 使用 select 切換協(xié)程 14.5 通道、超時(shí)和計(jì)時(shí)器(Ticker) 14.6 協(xié)程和恢復(fù)(recover) 14.7 新舊模型對(duì)比:任務(wù)和worker 14.8 惰性生成器的實(shí)現(xiàn) 14.9 實(shí)現(xiàn) Futures 模式 14.10 復(fù)用 14.11 限制同時(shí)處理的請(qǐng)求數(shù) 14.12 鏈?zhǔn)絽f(xié)程 14.13 在多核心上并行計(jì)算 14.14 并行化大量數(shù)據(jù)的計(jì)算 14.15 漏桶算法 14.16 對(duì)Go協(xié)程進(jìn)行基準(zhǔn)測(cè)試 14.17 使用通道并發(fā)訪問(wèn)對(duì)象 第15章:網(wǎng)絡(luò)、模板與網(wǎng)頁(yè)應(yīng)用 15.1 tcp 服務(wù)器 15.2 一個(gè)簡(jiǎn)單的 web 服務(wù)器 15.3 訪問(wèn)并讀取頁(yè)面數(shù)據(jù) 15.4 寫(xiě)一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)應(yīng)用 15.5 確保網(wǎng)頁(yè)應(yīng)用健壯 15.6 用模板編寫(xiě)網(wǎng)頁(yè)應(yīng)用 15.7 探索 template 包 15.8 精巧的多功能網(wǎng)頁(yè)服務(wù)器 15.9 用 rpc 實(shí)現(xiàn)遠(yuǎn)程過(guò)程調(diào)用 15.10 基于網(wǎng)絡(luò)的通道 netchan 15.11 與 websocket 通信 15.12 用 smtp 發(fā)送郵件 第16章:常見(jiàn)的陷阱與錯(cuò)誤 16.1 誤用短聲明導(dǎo)致變量覆蓋 16.2 誤用字符串 16.3 發(fā)生錯(cuò)誤時(shí)使用 defer 關(guān)閉一個(gè)文件 16.4 何時(shí)使用 new() 和 make() 16.5 不需要將一個(gè)指向切片的指針傳遞給函數(shù) 16.6 使用指針指向接口類(lèi)型 16.7 使用值類(lèi)型時(shí)誤用指針 16.8 誤用協(xié)程和通道 16.9 閉包和協(xié)程的使用 16.10 糟糕的錯(cuò)誤處理 第17章:模式 17.1 逗號(hào) ok 模式 17.2 defer 模式 17.3 可見(jiàn)性模式 17.4 運(yùn)算符模式和接口 第18章:出于性能考慮的實(shí)用代碼片段 18.1 字符串 18.2 數(shù)組和切片 18.3 映射 18.4 結(jié)構(gòu)體 18.5 接口 18.6 函數(shù) 18.7 文件 18.8 協(xié)程(goroutine)與通道(channel) 18.9 網(wǎng)絡(luò)和網(wǎng)頁(yè)應(yīng)用 18.10 其他 18.11 出于性能考慮的最佳實(shí)踐和建議 第19章:構(gòu)建一個(gè)完整的應(yīng)用程序 19.1 簡(jiǎn)介 19.2 短網(wǎng)址項(xiàng)目簡(jiǎn)介 19.3 數(shù)據(jù)結(jié)構(gòu) 19.4 用戶(hù)界面:web 服務(wù)端 19.5 持久化存儲(chǔ):gob 19.6 用協(xié)程優(yōu)化性能 19.7 以 json 格式存儲(chǔ) 19.8 多服務(wù)器處理架構(gòu) 19.9 使用代理緩存 19.10 總結(jié)和增強(qiáng)
其中還有豐富的代碼示例,絕對(duì)是一本學(xué)習(xí)Go語(yǔ)言的利器,最主要的好處當(dāng)然還是開(kāi)源以及中文~

小編對(duì)Go語(yǔ)言不敢說(shuō)特別了解的透徹,但是覺(jué)得GO語(yǔ)言的優(yōu)勢(shì)還在于以下幾點(diǎn):
部署方便,編譯起來(lái)不用依賴(lài)其他第三方的庫(kù) 豐富的內(nèi)置標(biāo)準(zhǔn)庫(kù),功能強(qiáng)大 性能出眾,速度超快,這在寸土寸金講究效率的今天更加重要 高并發(fā),可同時(shí)運(yùn)行成百上千個(gè)goroutines
不過(guò)更多的詳細(xì)內(nèi)容,可能還需要每個(gè)程序猿自己學(xué)習(xí)發(fā)掘了,畢竟每個(gè)人的編碼習(xí)慣與傾向都不一樣,一千個(gè)讀者就有一千個(gè)哈姆雷特,不管怎么樣,如果你想學(xué)習(xí)Go語(yǔ)言的話,這個(gè)開(kāi)源項(xiàng)目真的是你不容錯(cuò)過(guò)的一個(gè)好幫手:
點(diǎn)擊下方卡片,關(guān)注公眾號(hào)“TJ君”
回復(fù)“GO”,獲取倉(cāng)庫(kù)地址
