【Go】學習資源紀錄:Ultimate Go Programming(Ardan Labs)

更新 發佈閱讀 3 分鐘

前言

原本的計畫是寫系列文,一天嗑一點,雖然完整影片約17小時,分批消化卻花了我近10天,現在回去看我第一天寫的草稿,編輯時間已經是半年前...。

如果目標是快速學完下列項目,在Youtube上多的是1~2小時以內的教學,看完後直接開刷Leetcode熟悉語法會更有效率。

  • variable
  • type
  • condition
  • loop
  • function
  • pointer
  • struct
  • interface
  • channel
  • goroutine


如果目標是理解背後底層的設計,更多進階的應用,那麼這堂課可以說是含金量很高的課程。部分涉及到計算機概論、作業系統、硬體相關的知識,大多時候講師會改以圖示畫出應用場景的模型,尤其是 buffered channel應用的各式pattern,因此不建議初學就上這門課。


以下節錄幾個比較有收穫的章節:


Sememtic(語意)

  • value sementic
  • pointer sementic


對比其他語言而言,這章節在探討的是call by reference / value,更具體一點的細節是變數產生在stack / heap上。

在go語言中有自己的GC(Garbage Collection)機制,因此不需要像C/C++顧慮很多細節。其中的escape analysis也會在進行編譯時先分析程式碼,在決定優化調整後,實際要把功能建立在stack上還是heap。


小節的最後也提供了一些基本的原則:

1. 在創建的時候,使用value sementic
2. 在使用函式進行呼叫時,使用pointer sementic作為參數傳遞或回傳值


測試工具

go內建測試工具,不需要另外倚賴第三方套件,其中比較感興趣的是執行benchmark以及pprof。


如何知道程式碼優化了多少? --> 跑測試
如何知道哪個解法比較好? --> 跑測試


課程中使用了fmt.Sprint()fmt.Sprintf()進行benchmark測試,猜猜哪個性能好?

大多數人都猜fmt.Sprint()是比較佳的解法,畢竟少做了格式化輸出,而實際出來的結果數據卻恰好相反。


效能分析

另外一個印象深刻的工具是pprof,畢竟以往工作上有需要做效能監控跟優化的議題,當時使用Dynatrace紀錄上的項目,逐層request去檢視執行時間跟資源使用率。

pprof做的事情類似Dynatrace,可以把時間內執行的該項程式列出資源使用的剖面分析、hot spot集中在哪部分、程式呼叫的階層等資訊呈現出來。


小結

查了一下發現,Ardan Labs也是官網推薦的學習教材之一,主要還是以培訓為主,課程內容也比較深入。如果你是比較希望有大量程式碼範例可以跟著動手實做的人,那麼此課程或許不是那麼對味。


以初學者而言,Udemy上的Go: The Complete Developer's Guide倒是比較好上手,想當時練習goroutine跟channel發請求給各個網站,隔天馬上收到Linkedin寄來的通知信件...


偵測到疑似異常的登入行為,我們將對您的帳號進行封鎖...

參考資源

  • Ardan Labs
  • Go: The Complete Developer's Guide - Stephen Grider (初學用)


留言
avatar-img
留言分享你的想法!
avatar-img
Err500
12會員
79內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
註解 & Print & 變數型態
Thumbnail
註解 & Print & 變數型態
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News