所有文章: 2020/12

0

Go_Defer_延遲調用

看個例子, 這是一個讀取資料庫取資料的方法 123456func (db *DB) ReadData(age int, results []Result) { // 查詢資料庫 // 錯誤, 釋放連線 // 取值反射錯誤, 釋放連線 // 成功, 釋放連線} 因為GO沒有try{} finally{} 這語句.所以很多情況如果要在離開函數之前, 作一些必要的動作時就要在各種case下, 加上處理.early return的寫法, 也要每個return前都寫一樣的處理, 破壞簡潔. wtf 很容易寫成這樣 … 只要邏輯的層數多點的話​

0

Go modules 終於不會再被GOPATH綁死了

Go ModulesGo modules 出現原因 解除對GOPATH的完全依賴, 有go modules就能在$GOPATH外開專案了. 不同環境或者是多專案, 需要一套切換vendor目錄. 同一個依賴包的多種版本共存問題, 加入了版本化的支援. 可以使用GOProxy來解決某些地區無法使用go get的問題. 以往需要將vendor目錄一起提交到git, 避免CI/CD去拉到外部的依賴包. go modules有build cache, 在CI build server上速度飛快.​

0

3兄弟-Ring

這隻又跑出來了XDRing其實就是雙向環鏈(circular doubled linked list)用這圖, 是想表達, 我們有一個歌單可以單向依序放到完, 當然也能選擇循環依序播放阿 !!!Ring可以滿足這行為的操作!!​

0

Container 3兄弟-Heap

HeapHeap(堆積)其實是一個Complete Binary Tree(完全二元樹).Go的Heap特性是 各個節點都自己是其子樹的根, 且值是最小的.同個根節點的左子樹的值會小於右子樹.所以根節點的值是最小的, 位於索引0的位置.也有另一種是最大的(max heap), 只是Go這裡是最小的(min heap).定義 : n個元素 k1, k2,…ki…kn, 並且若且唯若滿足下列關係時稱為