我想在Go 2.0中看到什麼? - sethvargo
Go 是我最喜歡的程式語言之一,但它仍然遠非完美。在過去的 10 年裡,我使用 Go 來構建小型專案和大型應用程式。雖然該語言與 2009 年的原始版本相比有了很大的發展,但這篇文章強調了一些我認為 Go 仍有改進空間的領域。
現代模板引擎
Go 標準庫有兩個模板包:text/template和html/template. 它們使用大致相同的語法,但html/template處理實體轉義和一些其他特定於 Web 的構造。不幸的是,對於沒有大量開發人員投資的足夠高階的用例來說,這兩個包都不適合或足夠強大。
改進range以免複製值
雖然它有很好的文件記錄,但是range子句中的值被複制總是出乎意料的。
確定性 select
在一個select語句的多個條件為真的情況下,獲勝的情況是 undefined。這是一個非常微妙的錯誤來源,並且看起來相似的switch宣告會加劇這種情況,該宣告確實按照編寫順序進行評估。
結構化日誌介面
Go 的標準庫包含這個log包,它非常適合基本使用。但是,大多數生產系統都需要結構化日誌記錄,而Go 中不乏結構化日誌記錄庫:
- apex/log
- go-kit/log
- golang/glog
- hashicorp/go-hclog
- inconshreveable/log15
- rs/zerolog
- sirupsen/logrus
- uber/zap
Go 在這個領域缺乏意見導致了這些包的泛濫,其中大多數具有不相容的功能和簽名。
Go 標準庫需要定義一個結構化的日誌介面,所有這些現有的上游包都可以選擇實現該介面。
多錯誤處理
在很多情況下,特別是對於後臺作業或週期性任務,系統可能會並行處理事物或繼續出錯。在這些情況下,返回多重錯誤會很有幫助。標準庫中沒有對處理錯誤集合的內建支援。
圍繞多錯誤處理擁有清晰簡潔的標準庫定義可以統一社群並降低錯誤處理不當的風險,正如我們在錯誤包裝和展開中看到的那樣。
JSON序列號 error
標準庫中不再有公共變數
僅舉一個例子,http.DefaultClient和http.DefaultTransport都是具有共享狀態的全域性變數。http.DefaultClient沒有配置超時,這使得DOS 自己的服務變得微不足道並造成瓶頸。許多包會發生變異如http.DefaultClient,http.DefaultTransport,這可能會浪費數天的開發人員資源來追蹤錯誤。
Go 2.0 應該將它們設為私有並通過函式呼叫公開它們,該函式呼叫返回所討論變數的唯一分配。或者,Go 2.0 可以實現“凍結”全域性變數,這樣它們就不會被其他包改變。
對緩衝渲染器的本機支援
點選標題見原文
本文作者Seth Vargo 是Google的一名工程師。此前,他曾在 HashiCorp、Chef Software、CustomInk 和一些匹茲堡的初創公司工作。他是Learning Chef的作者,熱衷於減少技術上的不平等。當他不寫作、從事開源工作、教學或在會議上發言時,Seth 會為非營利組織提供建議。
相關文章
- 我為什麼從php轉go?PHPGo
- 青瓷遊戲遞表港交所背後我們能看到什麼?遊戲
- 我再也不想在任何標頭檔案中看到“using namespace xxx;”了namespace
- 在 Go 語言中,我為什麼使用介面Go
- 我為什麼又搞了一個Go社群Go
- 我為什麼從python轉向goPythonGo
- 我們為什麼要使用GO語言?Go
- Google為什麼拼命想在社交網路上成功Go
- 從java的NIO版hello world看java原始碼,我們能看到什麼?Java原始碼
- 從Netty版hello world看Netty原始碼,我們能看到什麼?Netty原始碼
- 我們能從Pokémon GO中學到什麼Go
- 我為什麼不從NodeJS切換到GoNodeJSGo
- 為什麼我最喜歡的程式語言是 GoGo
- 想在 Docker 上搭建 Laravel,有什麼相關文章可以推薦DockerLaravel
- 什麼是Go語言?Go語言有什麼特點?Go
- 為什麼我們會看到 SAP Spartacus 伺服器端渲染 `rendering in process` 的日誌伺服器
- 2米精度的遙感影像能看到什麼?
- 為什麼我們需要一門新語言——Go語言Go
- 評: 為什麼我不喜歡Go語言式的介面Go
- MySQL:為什麼lsof會看到這麼多臨時檔案MySql
- 分析了2020年3萬多條的微博熱搜,我看到了什麼
- 從韓國區塊鏈發展能看到什麼區塊鏈
- 我所看到的印度軟體業薦
- go語言能做什麼Go
- 我為什麼要做IT
- 從玩家視角解析“開放世界遊戲”能看到什麼?遊戲
- 為什麼那麼多人要學習go語言?go語言有什麼特點?Go
- “Go語言”有什麼用途?有什麼優勢?Go
- Go語言適合做什麼 ?Go
- Go語言GOPATH是什麼Go
- go func 時發生了什麼Go
- 為什麼我不喜歡Go語言式的介面(即Structural Typing)GoStruct
- 為什麼很多公司都轉型go語言開發?Go語言能做什麼Go
- 我為什麼使用 JavaJava
- GC是什麼?為什麼我們要去使用它GC
- 什麼是Web workers?為什麼我們需要他Web
- Dubbo為什麼要用Go重寫?Go
- Go 小白的十萬個為什麼Go