原創做者,公衆號【程序員讀書】,歡迎關注公衆號,轉載文章請註明出處哦。html
之因此會寫這篇文章,是由於在自學Go
語言的過程,總會有些困惑和迷茫,總但願更好地學習下去,所以有了一些想法,在這裏梳理一下,以便往後回過頭來也能夠看看此時此刻的想法。程序員
基礎,除了學習Go
語言的基礎外,也應該增強計算機基礎的學習。golang
對於Go
語言的基礎,不少從其餘語言轉過來的人,會以爲Go
的基礎就是簡單的語法知識,所以沒有注重這塊知識的學習,其實,我以爲對於Go
語言的基礎除了基礎語法
以外,還有Go語言的使用規範
、編程思惟
、CSP模型
等,都須要深刻學習和研究。算法
另一個就是計算機基礎,這方面的基礎比較枯燥,包括數據結構
、算法
、計算機原理
、計算機操做系統
、計算機網絡
等,我以爲計算機基礎知識是一個程序員能走多遠的關鍵因素,沒有這些基礎知識的加持,對於Go
語言的學習與使用,只會停留很基礎的層面,沒法入使用。編程
因此,基礎很枯燥,但對於基礎的學習,頗有必要。設計模式
不少關於Go
語言的書籍內容都是千篇一概的,大概是由於這些書籍只是簡單地羅列出一些很基礎的知識,其內容跟Go
語言的官方文檔所列出的差很少,所以,若是是剛入門的新手想學Go
語言的基礎,建議仍是多看Go
語言的官方文檔,特別建議看《Effective Go》,這裏面有官方提供的Go語言最權威高效和的基礎知識與使用方式。微信
固然也不是說全部的書籍都不值得看,像《Go程序設計語言》
和《Go語言實戰》
這些經典的書籍,仍是應該多看看。網絡
除了官方文檔與經典書籍,我以爲一些實戰的書籍也不錯,好比掘金小冊《基於 Go 語言構建企業級的 RESTful API 服務》
,通常偏實戰的書籍或課程,咱們能夠學習如何應用GO
語言開發程序,學習Go
語言最重要的一點就是使用Go
語言的思惟開發應用程序,而不用其餘編程語言的思惟來寫Go
程序。數據結構
另一個要說的是,英語真的很重要,不少的技術官方文檔都是用英文寫的,因此須要必定的英語基礎才閱讀,不少人會說看翻譯的中文文檔不就好了,對於一些中文文檔,一個是翻譯得不全,一個是有時候也翻譯得不許,還真不如直接看英文文檔。編程語言
閱讀別人優秀的項目源代碼,是提高本身寫代碼能力的一個很好的方式,咱們能夠從那些優秀的開源項目中學到別人的代碼組織方式,設計模式和代碼分層,解決問題思路,優秀的算法和數據結構,甚至能夠學習一些代碼命名風格等。
尤爲是從別的開發語言轉到Go
語言的同窗,更應該多閱讀Go
語言的一些開源項目,由於Go
語言的不少設計和開發思想,跟其餘編程語言真的很大的區別,因此,當咱們轉到Go
開發時,應該學習使用Go的思惟去解決問題,而不是用其餘編程語言的思惟來使用Go
語言。
Go
語言的開源項目有不少,最有名的像你們都知道的Docker
和Kubernetes
,下面的網址,是別人維護的Go
語言優秀開源項目列表,建議你們收藏。
除了閱讀別人優秀的項目源代碼,其實,咱們也能夠維護一個本身的開源項目,這樣的作好處是什麼呢?
維護一個本身的項目,能夠綜合地運用本身所以爲的知識,看書看視頻看文檔去作代碼練習,獲得的只是一些簡單的代碼片斷,不是一個綜合性成果,真正體現本身學習所得的東西,應該是一個完整的項目。
每一種編程語言或技術都屬於本身的社區或圈子,Go
語言也同樣有本身的社區,固然,那些英文的社區雖然有更豐富的資料和訊息,但咱們可能因爲本身的英文水平,而沒法與外國的技術大牛溝通,那也不要緊,Go語言也有同樣很是優秀的中文社區,如Go語言中文網
。
除此以外,不少技術圈都會建不少的微信羣或QQ羣,我以爲加入一兩個這樣的羣,跟羣裏的人討論技術,遇到不懂的問題,也能夠發問,若是本身懂的,也能夠幫別人解決,讓本身更加有學習的動力。
爲何說寫做是最好的學習方式呢?由於寫做是一個教別人的過程,咱們但願寫的東西別人能看懂,這就會逼着咱們主動去學習,而主動學習是最高效的學習方式。
這裏有個概念,叫費曼技巧
,講就是經過教授別人來達到主動學習的目的,而主動學習金字塔中學習效率最高的學習方式。
所以,在Go
語言的學習過程當中,最好的學習方式仍是在學習的過程,學會總結並記錄所學的知識碰到的問題。
對所學的知識進行簡單的整理,或許這樣有助於更加清晰地認識本身的學習,也能更好地調整學習方向與目標。
你的關注,是我寫做路上最大的鼓勵!