原創作者,公眾號【程式設計師讀書】,歡迎關注公眾號,轉載文章請註明出處哦。
之所以會寫這篇文章,是因為在自學Go
語言的過程,總會有些困惑和迷茫,總希望更好地學習下去,因此有了一些想法,在這裡梳理一下,以便日後回過頭來也可以看看此時此刻的想法。
關於基礎
基礎,除了學習Go
語言的基礎外,也應該加強計算機基礎的學習。
對於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
語言的學習過程中,最好的學習方式還是在學習的過程,學會總結並記錄所學的知識碰到的問題。
小結
對所學的知識進行簡單的整理,或許這樣有助於更加清晰地認識自己的學習,也能更好地調整學習方向與目標。
你的關注,是我寫作路上最大的鼓勵!