4 個技巧學習 Golang

到達 Golang 大陸:一位資深開發者之旅。

2014 年夏天……linux

IBM:「咱們須要你弄清楚這個 Docker。」程序員

我:「沒問題。」shell

IBM:「那就開始吧。」編程

我:「好的。」(心裏聲音):」Docker 是用 Go 編寫的。是嗎?「(Google 一下)「哦,一門編程語言。我在個人崗位上已經學習了不少了。這不會太難。」vim

個人大學新生編程課是使用 VAX 彙編程序教授的。在數據結構課上,咱們使用 Pascal —— 在圖書館計算機中心的舊電腦上使用軟盤加載。在一門更高一級的課程中,個人教授教授喜歡用 ADA 去展現全部的例子。在咱們的 Sun 工做站上,我經過各類 UNIX 的實用源代碼學到了一點 C。在 IBM,OS/2 源代碼中咱們使用了 C 和一些 x86 彙編程序;在一個與 Apple 合做的項目中咱們大量使用 C++ 的面向對象功能。不久後我學到了 shell 腳本,開始是 csh,可是在 90 年代中期發現 Linux 後就轉到了 Bash。在 90 年代後期,我在將 IBM 的定製的 JVM 代碼中的即時(JIT)編譯器移植到 Linux 時,我不得不開始學習 m4(與其說是編程語言,不如說是一種宏處理器)。數據結構

一晃 20 年……我從未由於學習一門新的編程語言而焦灼。可是 Go 讓我感受有些不一樣。我打算公開貢獻,上傳到 GitHub,讓任何有興趣的人均可以看到!做爲一個 40 多歲的資深開發者的 Go 新手,我不想成爲一個笑話。咱們都知道程序員的驕傲,不想丟人,不論你的經驗水平如何。編程語言

我早期的調研顯示,Go 彷佛比某些語言更 「地道」。它不只僅是讓代碼能夠編譯;也須要讓代碼能夠 「Go Go Go」。編輯器

如今,個人我的的 Go 之旅四年間有了幾百個拉取請求(PR),我不是致力於成爲一個專家,可是如今我以爲貢獻和編寫代碼比我在 2014 年的時候更舒服了。因此,你該怎麼教一個老人新的技能或者一門編程語言呢?如下是我本身在前往 Golang 大陸之旅的四個步驟。工具

一、不要跳過基礎

雖然你能夠經過複製代碼來進行你早期的學習(誰還有時間閱讀手冊!?),Go 有一個很是易讀的 語言規範,它寫的很易於理解,即使你在語言或者編譯理論方面沒有取得碩士學位。鑑於 Go 的 參數:類型 順序的特有習慣,以及一些有趣的語言功能,例如通道和 go 協程,搞定這些新概念是很是重要的是事情。閱讀這個附屬的文檔 高效 Go 編程,這是 Golang 創造者提供的另外一個重要資源,它將爲你提供有效和正確使用語言的準備。學習

二、從最好的中學習

有許多寶貴的資源可供挖掘,能夠將你的 Go 知識提高到下一個等級。最近在 GopherCon 上的全部講演均可以在網上找到,如這個 GopherCon US 2018 的詳盡列表。這些講演的專業知識和技術水平各不相同,可是你能夠經過它們輕鬆地找到一些你所不瞭解的事情。Francesc Campoy 建立了一個名叫 JustForFunc 的 Go 編程視頻系列,其不斷增多的劇集能夠用來拓寬你的 Go 知識和理解。直接搜索 「Golang" 能夠爲那些想要了解更多信息的人們展現許多其它視頻和在線資源。

想要看代碼?在 GitHub 上許多受歡迎的雲原生項目都是用 Go 寫的:Docker/Moby、Kubernetes、Istio、containerd、CoreDNS,以及許多其它的。語言純粹主義者可能會認爲一些項目比另一些更地道,但這些都是很好的起點,能夠看到在高度活躍的項目的大型代碼庫中使用 Go 的程度。

三、使用優秀的語言工具

你會很快了解到 gofmt 的寶貴之處。Go 最漂亮的一個地方就在於沒有關於每一個項目代碼格式的爭論 —— gofmt 內置在語言的運行環境中,而且根據一系列可靠的、易於理解的語言規則對 Go 代碼進行格式化。我不知道有哪一個基於 Golang 的項目會在持續集成中不堅持使用 gofmt 檢查拉取請求。

除了直接構建於運行環境和 SDK 中的一系列有價值的工具以外,我強烈建議使用一個對 Golang 的特性有良好支持的編輯器或者 IDE。因爲我常常在命令行中進行工做,我依賴於 Vim 加上強大的 vim-go 插件。我也喜歡微軟提供的 VS Code,特別是它的 Go 語言 插件。

想要一個調試器?Delve 項目在不斷的改進和成熟,它是在 Go 二進制文件上進行 gdb 式調試的強有力的競爭者。

四、寫一些代碼

你要是不開始嘗試使用 Go 寫代碼,你永遠不知道它有什麼好的地方。找一個有 「須要幫助」 問題標籤的項目,而後開始貢獻代碼。若是你已經使用了一個用 Go 編寫的開源項目,找出它是否有一些能夠用初學者方式解決的 Bug,而後開始你的第一個拉取請求。與生活中的大多數事情同樣,實踐出真知,因此開始吧。

事實證實,你能夠教會一個資深的老開發者一門新的技能甚至編程語言。

相關文章
相關標籤/搜索