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中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...