目錄
- 開篇詞 | 跟著學,你也能成為Go語言高手
- 導讀 | 寫給0基礎入門的Go語言學習者
- 導讀 | 學習專欄的正確姿勢
開篇詞 | 跟著學,你也能成為Go語言高手
Go 語言是由 Google 出品的一門通用型計算機程式語言。
Go 程式可以在裝有 Windows、Linux、FreeBSD 等作業系統的伺服器上執行,並用於提供基礎軟體支撐、API 服務、Web 服務、網頁服務等等。
Go 語言也在移動端進行了積極的探索,現在在 Android 和 iOS 上都可以執行其程式。另外,Go 語言也已經與 WebAssembly 強強聯合,加入了 WASM 平臺。這意味著過不了多久,網際網路瀏覽器也可以執行 Go 編寫的程式了。
從公司角度看,許多大廠都已經擁抱 Go 語言,包括以 Java 打天下的阿里巴巴,更別提深愛著 Go 語言的滴滴、今日頭條、小米、奇虎 360、京東等明星公司。同時,創業公司也很喜歡 Go 語言,主要因為其入門快、程式庫多、執行迅速,很適合快速構建網際網路軟體產品,比如輕鬆籌、快手、知乎、探探、美圖、獵豹移動等等。
下面,我們一起瀏覽一下本專欄的主要模組,一共分成 3 大模組,5 個章節。
- 基礎概念:我會講述 Go 語言基礎中的基礎,包括一些基本概念和運作機制。它們都應該是你初識 Go 語言時必須知道的,同時也有助於你理解後面的知識。
- 資料型別和語句:Go 語言中的資料型別大都是很有特色的,你只有理解了它們才能真正玩轉 Go 語言。我將和你一起與探索它們的奧妙。另外,我也會一一揭示怎樣使用各種語法和語句操縱它們。
- Go 程式的測試:很多程式設計師總以為測試是另一個團隊的事情,其實不然。單元測試甚至介面測試其實都應該是程式設計師去做的,並且應該受到重視。在 Go 語言中怎樣做好測試這件事?我會跟你說清楚、講明白。
- 標準庫的用法:雖然 Go 語言提供了自己的高效併發程式設計方式,但是同步方法依然不容忽視。這些方法集中在sync程式碼包及其子包中。這部分還涉及了位元組和字元問題、OS 操控方法和 Web 服務寫法等,這些都是我們在日常工作中很可能會用到的。
- Go 語言拾遺:這部分將會講述一些我們使用 Go 語言做軟體專案的過程中很可能會遇到的問題。
導讀 | 寫給0基礎入門的Go語言學習者
1. 你需要遵循怎樣的學習路徑來學習 Go 語言?
Go語言學習路線
2. 學習本專欄前,你需要有哪些基礎知識儲備?
- 有一定的計算機基礎,比如,知道作業系統是什麼、環境變數怎麼設定、命令列怎樣使用,等等。
- 具備一點點程式設計知識,比如,知道程式是什麼、程式通常會以怎樣的形式存在,以及程式與作業系統和計算機有哪些關係,等等。
- 知道那些最最基本的網路知識。
從 2018 年開始,隨著 Google 逐漸重回中國,Go 語言的官方網站在 Google 中國的域名下也有了映象,畢竟中國是 Go 語言愛好者最多的國家,同時也是 Go 語言使用最廣泛的一片土地。如果你在國內,可以敲入這個網址 https://golang.google.cn/ 來訪問 Go 語言的官網。
這個專欄專注於 Go 語言的核心知識,因此我並不會深入說明所有關於語法和命令的細枝末節。如果你想去全面瞭解 Go 語言的所有語法,那麼可以去 Go 語言官網的語言規範頁面 https://golang.google.cn/ref/spec 仔細查閱。
如果你想專門學習一下 Go 命令方面的知識和技巧,那麼我推薦你看看我之前寫的免費開源教程《Go 命令教程 https://github.com/hyper0x/go_command_tutorial 》。這份教程的內容雖然稍顯陳舊,但是幫助你學會使用 Go 語言自帶的常用命令和工具肯定是沒問題的。
3. 這裡有一份基礎知識列表,請查收
Go 語言基礎知識的導圖
導讀 | 學習專欄的正確姿勢
實踐的正確姿勢
給大家的第一個建議一般都是“去寫網路爬蟲吧”。
網際網路絡的世界很龐雜,但又有一定的規律可循,是非常好的技術學習環境。你編寫一個網路服務程式,即使放到了公共的網路上,也還需要考慮清楚一系列的問題,才能讓你有足夠多的技術磨鍊機會,比如,服務的種類、功能、規則、安全、介面、受眾、宣傳和訪問途徑,以及日常的非技術性維護。
我們要讓程式去模擬人的行為,模擬人使用網路瀏覽器訪問網站內容的過程,而不是用盡計算力去瘋狂地霸佔人家的頻寬和服務,否則那不就成了網路攻擊了。這是一個非常重要的自我實踐的技巧,請大家記住,“利己,但不要損人”。
注意,正常爬取網站內容並不意味著失去了高併發的應用場景。把內容下載下來只是一個開始,後邊還有不少的工作要做呢。
單單“模擬人”這一點就需要花一些心思。而且,你可以同時爬取成千上萬的同類甚至不同類的網站。這已經足夠你研究和實踐很長一段時間了。我在這裡還要鄭重地提示一下,做這類技術研究一定不要跨越道德的底線,更不能違反法律。
再進一步,我們最好以結構化的形式把爬取到的網路內容儲存下來。當得到足夠多的資料之後,你的選擇就很多了。比如,對某類資料進行整理、提取和分析,從而挖掘出更有價值的東西。這就屬於資料探勘的範疇了。
在如今這個資料過剩的時代,這也是一項很重要的技能。又比如,基於這些資料提供統一的訪問介面,製作成搜尋引擎,甚至對外提供服務。這也是一個很有深度的選擇。
優秀 Go 專案推薦
課程連結
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。
歡迎轉載、使用、重新發布,但務必保留文章署名 鄭子銘 (包含連結: http://www.cnblogs.com/MingsonZheng/ ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。