# 引言
當開始學習一門新的語言時,我總有一種既愛又恨的感覺。一方面,語言是我們做事情的基礎,即使是小的變化,也會帶來明顯的效果。當一些事情恍然大悟時,會給如何編程帶來持久的影響,并且能夠重新定義你關于其他語言的期望。不利的一面是,語言設計是一個持續的過程。學習新的關鍵字、系統類型、編碼風格、新的庫、社區和范例,似乎很難解釋這些需要付出許多努力。和那些我們必須學習的事相比較,花費時間去學習新語言常讓人覺得不值得。
也就是說,我們必須愿意采用漸進的步驟,我們必須進步。因為語言是我們做事的基礎。雖然語言一直在變化,但是它們趨向于一個更廣闊的范圍,并且會影響生產力、可讀性、可靠性、性能、可測試性、依賴管理、錯誤處理、文檔、性能分析、社區和標準庫等等。難道說千刀萬剮導致的死亡是一種積極方式?
這也給我們留下了一個重要的問題,為什么是go語言?對我來說,有兩個令人信服的原因。第一,這是個相對簡單的語言,它有一個相對簡單的標準庫。在很多方面,go語言漸進的性質,將簡化一些我們過去幾十年所看到的增加到語言上的復雜性。第二,對于大多數開發者,這將會補充你現有的語言工具庫。
go被創建成一種系統語言(比如,操作系統和設備驅動),go是針對C/C++開發者的。據go核心開發組說,我可以確定是真的,應用程序開發者已經成為主要的go語言用戶,而不是系統開發者。為什么呢?我不能代表所有的系統開發人員,但是,對于構建網站、服務和桌面應用等而言,主要歸結于一類新興系統的需求,這類系統介于低級系統應用和高級系統應用之間。
可能go語言有消息傳遞機制、帶緩存、重計算數據分析、命令行接口、日志或監控,我不知道給go語言什么樣的標簽,但是在我的職業生涯中,由于系統持續增長的復雜性和成千上萬種常用的并發方式,很明顯,定制基礎設施系統,是一個不斷增長的需求。你可以用ruby或python或別的語言建立這樣的系統(好多人這么做),但是這類系統受益于更嚴格類型系統和更高性能。同樣地,你可以用go語言構建網站(也有好多人這么做),但是話又說回來,我還是喜歡通過表達性更強的Node或Ruby來實現這樣的系統。
go語言還擅長于其他的領域。比如,當運行一個編譯過的go程序時,它沒有依賴性。你不必擔心用戶是否安裝了ruby或者jvm,而且如果是這樣,還要考慮是什么版本。出于這個原因,go作為命令行界面程序和其他并發類型應用程序的開發語言(例如日志收集),變得越來越流行。
坦白地說,學習go語言可以有效的利用你的時間。你不必花大量的時間去學習或者掌握它,你從你的努力中最終會得到一些實用的東西。
## 作者注解
我猶豫地寫下這本書,有兩個原因。首先,是由于go語言官方文檔已經很完善了,特別是《Effective Go》。另一個原因是我在寫一本介紹語言類的書時有點不安。當我寫《The Little MongoDB Book》這本書時,我已經假設大多數讀者理解關系型數據庫和建模的基本知識。寫《The Little Redis Book》時,你也可以做出類似的假設,即讀者已經可以往redis中插入鍵值,然后從redis中查詢該鍵值。
據我說知,前面這些章節,我不能再做出相同的假設。你花多長時間學習接受并理解它,這是個新的概念。比起go語言擁有的接口,其他人家是否需要更多?最終,如果你告訴我本書那些地方太淺或者太詳細,考慮到這本書的價值,我會感到欣慰。
## 鏈接
作者博客: [極客筆記](https://geeknr.com)
- 關于本書
- 引言
- 準備工作
- 安裝 Go語言開發環境
- 開始使用Go
- 創建一個Go模塊
- 第一章 手把手系列
- 1.1 教你搭建Nginx教程
- 1.2 教你搭建Jupyter教程
- 1.3 教你搭建Node教程
- 1.4 教你搭建Fabric教程
- 1.5 教你搭建Ethereum教程
- 1.6 教你搭建Bitcoin教程
- 1.7 教你搭建Systemd教程
- 第二章 架構師之路
- 2.1 微服務開發筆記
- 2.2 Docker開發筆記
- 2.3 ElasticSearch開發筆記
- 2.4 Linux開發筆記
- 2.5 Mysql開發筆記
- 2.6 Nginx開發筆記
- 2.7 Redis開發筆記
- 第三章 區塊鏈教程
- 3.1 Bitcoin開發筆記
- 3.2 Ethereum開發筆記
- 3.3 USDT開發筆記
- 第四章 網絡知識庫
- 4.1 比特幣白皮書
- 4.2 以太坊白皮書
- 第五章 技術博客園
- 5.1 Fabric架構詳解
- 5.2 技術開發指南
- 5.3 共識機制詳解
- 第六章 項目管理
- 6.1 項目運行環境
- 6.2 項目經理的角色
- 6.3 第6、7、8章框架
- 第七章 公務員考公
- 7.1 程序員成功上岸經歷
- 7.2 程序員備考的最佳實踐
- 7.3 程序員備考過程中會遇到哪些問題?
- 7.4 公考公平嗎,35歲再去考可以么?
- 7.5 資料、工具推薦和擴展閱讀
- 結論
- 附錄