Linux中國

學習 Golang 的 4 個技巧

2014 年夏天……

IBM:「我們需要你弄清楚這個 Docker。」

我:「沒問題。」

IBM:「那就開始吧。」

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

我的大學新生編程課是使用 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 大陸之旅的四個步驟。

1、不要跳過基礎

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

2、從最好的中學習

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

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

3、使用優秀的語言工具

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

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

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

4、寫一些代碼

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

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

via: https://opensource.com/article/18/11/learning-golang

作者:Phill Estes 選題:lujun9972 譯者:dianbanjiu 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國