[英]Collections in golang
我使用 golang 作為我的服務器語言(因為我喜歡學習新語言)。 與 Python 或 Javascript 相比,我喜歡 go 是強類型的這一事實。
我正在尋找一種設計模式,允許我為自定義對象創建 collections。 在 Java、C# 或 C++ 中,我會使用 Z56B97998B338B9377FF5A928EE。 在 C 中,我會破解預處理器。 在 golang 中,我無法提出解決方案。
我總是可以使用 interface{},但這樣我就會失去強類型的優勢。 (你好 python/node.js 運行時錯誤!)
目前我只是為我需要的每種新類型復制粘貼我的 collections,但我發現自己在努力維護代碼庫,因為現在每個集合有大約 10 個副本。 所以我正在尋找更好的設計模式。 (此外,我的每一盎司都在告訴我這是一個壞主意)
我不是在尋找關於“沒有 generics 正在運行”的咆哮。 我正在尋找遇到並圍繞此類問題進行設計的實際經驗豐富的 golang 開發人員。
不幸的是,如果像切片/地圖這樣的標准 go 數據類型沒有您目前需要的功能,那么可以做的事情不多。
將 generics 添加到 go 會使實現 collections 更容易的原因是什么。 至於現在,有工具的草稿和第二個版本。 您可以在此處找到更多信息。
https://github.com/ReactiveGo/jig是一個工具,它可以通過生成您需要的 collections 讓您的生活更輕松。
Now that go supports generics, I took a shot at porting my old generics-base java collection framework to go (significantly gopherizing it in the process). 該框架定義了一組不錯的簡單接口,支持的集合類型包括:
框架中還包括一些對集合類型進行操作的代理:
你可以在這里查看: https://github.com/craterdog/go-frameworks/wiki/Collections
請注意,此框架仍處於實驗性 state 但歡迎任何反饋和建議。
您可以嘗試檢查這個項目: https://github.com/jose78/go-collection 。 這個項目提供了很多方法來輕松使用 collections。
問候,JC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.