Go知識彙總

一笑的小屋發表於2024-11-26

# 包

  • 常用官方包說明
  • 常用第三方包說明
  • 常用框架
  • 完整標準庫列表
  • 優秀的第三方庫
  • 音訊和音樂
  • 資料結構:Go中的通用資料結構和演算法
  • 分散式系統:Go中的通用資料結構和演算法
  • 電子郵件:實現電子郵件建立和傳送的庫和工具
  • 嵌入式指令碼語言:在go程式碼中嵌入其他語言
  • 錯誤處理
  • 處理檔案和檔案系統的庫
  • 金融:會計和財務軟體包
  • 遊戲開發:遊戲開發相關庫
  • 地理位置:地理相關的位置資訊和工具庫
  • 編譯器相關:轉到其他語言
  • Goroutines:用於管理和使用Goroutines的工具
  • 圖形介面:用於構建GUI應用程式的庫
  • 圖片:用於處理影像的庫
  • 物聯網:物聯網裝置程式設計庫
  • JSON格式:用於處理JSON的庫
  • 機器學習:常用機器學習庫
  • 微軟辦公軟體
  • 自然語言處理
  • 網路:與網路各層配合使用的庫
  • 影片:用於處理影片的庫

高階特性

  • golang面試題:能說說uintptr和unsafe.Pointer的區別嗎?
  • golang 面試題:reflect(反射包)如何獲取欄位 tag?為什麼 json 包不能匯出私有變數的 tag?
  • 協程和執行緒的差別
  • 垃圾回收的過程是怎麼樣的?
  • 什麼是寫屏障、混合寫屏障,如何實現?
  • 開源庫裡會有一些類似下面這種奇怪的用法:var _ io.Writer = (*myWriter)(nil),是為什麼?
  • GMP模型
  • 協程之間是怎麼排程的
  • gc的stw是怎麼回事
  • 利用golang特性,設計一個QPS為500的伺服器
  • 為什麼gc會讓程式變慢
  • 開多個執行緒和開多個協程會有什麼區別
  • 兩個interface{} 能不能比較
  • 必須要手動對齊記憶體的情況
  • go棧擴容和棧縮容,連續棧的缺點
  • golang怎麼做程式碼最佳化
  • golang隱藏技能:怎麼訪問私有成員
    問題排查
  • trace
  • pprof
    原始碼閱讀
  • sync.map
  • net/http
  • mutex
  • channel
  • context
  • select實現原理
  • main函式背後的啟動過程
  • 記憶體管理
  • GC垃圾回收
  • timer
    彙編
  • 彙編入門
  • 推薦書籍
  • 影片教程
    實踐常用工具
  • mysql建表語句轉golang struct
  • json轉golang struct
  • toml轉golang struct
  • yaml轉golang struct

其他

常用官方包

  • fmt - 實現格式化的輸入輸出操作,其中的fmt.Printf()和fmt.Println()是開發者使用最為頻繁的函式。
  • io - 實現了一系列非平臺相關的IO相關介面和實現,比如提供了對os中系統相關的IO功能的封裝。我們在進行流式讀寫(比如讀寫檔案)時,通常會用到該包。
  • bufio - 它在io的基礎上提供了快取功能。在具備了快取功能後, bufio可以比較方便地提供ReadLine之類的操作。
  • strconv - 提供字串與基本資料型別互轉的能力。
  • os - 本包提供了對作業系統功能的非平臺相關訪問介面。介面為Unix風格。提供的功能包括檔案操作、程序管理、訊號和使用者賬號等。
  • sync - 它提供了基本的同步原語。在多個goroutine訪問共享資源的時候,需要使用sync中提供的鎖機制。
  • flag - 它提供命令列引數的規則定義和傳入引數解析的功能。絕大部分的命令列程式都需要用到這個包。
  • encoding/json - JSON目前廣泛用做網路程式中的通訊格式。本包提供了對JSON的基本支援,比如從一個物件序列化為JSON字串,或者從JSON字串反序列化出一個具體的物件等。
  • http - 透過http包,只需要數行程式碼,即可實現一個爬蟲或者一個Web伺服器,這在傳統語言中是無法想象的。

常用第三方包

  • 資料庫操作 - github.com/jinzhu/gorm github.com/go-xorm/xorm
  • 搜尋es - github.com/olivere/elastic
  • rocketmq操作 - github.com/apache/rocketmq-client-go/v2
  • rabbitmq 操作 - github.com/streadway/amqp
  • redis 操作 - github.com/go-redis/redis
  • etcd 操作 - github.com/coreos/etcd/clientv3
  • kafka - https://github.com/Shopify/sarama https://github.com/bsm/sarama-cluster
  • excel 操作 - github.com/360EntSecGroup-Skylar/excelize
  • ppt 操作 - golang.org/x/tools/cmd/present
  • go-svg 操作 - https://github.com/ajstarks/svgo
  • go 布隆過濾器實現 - https://github.com/AndreasBriese/bbloom
  • json相關 - https://github.com/bitly/go-simplejson
  • LRU Cache實現 - https://github.com/bluele/gcache https://github.com/hashicorp/golang-lru
  • go執行時函式替換 - https://github.com/bouk/monkey
  • toml - https://github.com/toml-lang/toml https://github.com/naoina/toml
  • yaml - https://github.com/go-yaml/yaml
  • viper - https://github.com/spf13/viper
  • go key/value儲存 - https://github.com/etcd-io/bbolt
  • 基於ringbuffer的無鎖golang workpool - https://github.com/Dai0522/workpool
  • 輕量級的協程池 - https://github.com/ivpusic/grpool
  • 列印go的詳細資料結構 - https://github.com/davecgh/go-spew
  • 基於ringbuffer實現的佇列 - https://github.com/eapache/queue
  • 拼音 - https://github.com/go-ego/gpy
  • 分詞 - https://github.com/go-ego/gse
  • 搜尋 - https://github.com/go-ego/riot
  • windows COM - https://github.com/go-ego/cedar
  • session - https://github.com/gorilla/sessions
  • 路由 - https://github.com/gorilla/mux
  • websocket - https://github.com/gorilla/websocket
  • Action handler - https://github.com/gorilla/handlers
  • csrf - https://github.com/gorilla/csrf
  • context - https://github.com/gorilla/context
  • 過濾html標籤 - https://github.com/grokify/html-strip-tags-go
  • 可配置的HTML標籤過濾 - https://github.com/microcosm-cc/bluemonday
  • 根據IP獲取地理位置資訊 - https://github.com/ipipdotnet/ipdb-go
  • html轉markdown - https://github.com/jaytaylor/html2text
  • goroutine 本地儲存 - https://github.com/jtolds/gls
  • 彩色輸出 - https://github.com/mgutz/ansi
  • 表格列印 - https://github.com/olekukonko/tablewriter
  • reflect 更高效的反射API - https://github.com/modern-go/reflect2
  • msgfmt (格式化字串,將%更換為變數名) - https://github.com/modern-go/msgfmt
  • 可取消的goroutine - https://github.com/modern-go/concurrent
  • 深度複製 - https://github.com/mohae/deepcopy
  • 安全的型別轉換包 - https://github.com/spf13/cast
  • 從文字中提取連結 - https://github.com/mvdan/xurls
  • 字串格式處理(駝峰轉換) - https://godoc.org/github.com/naoina/go-stringutil
  • 文字diff實現 - https://github.com/pmezard/go-difflib
  • uuid相關 - https://github.com/satori/go.uuid https://github.com/snluu/uuid
  • 去除UTF編碼中的BOM - https://github.com/ssor/bom
  • 圖片縮放 - https://github.com/nfnt/resize
  • 生成 mock server - https://github.com/otokaze/mock
  • go 效能上報到influxdb - https://github.com/rcrowley/go-metrics
  • go zookeeper客戶端 - https://github.com/samuel/go-zookeeper
  • go thrift - https://github.com/samuel/go-thrift
  • MQTT 客戶端 - https://github.com/shirou/mqttcli
  • hbase - https://github.com/tsuna/gohbase
  • go 效能上報到influxdb - https://github.com/rcrowley/go-metrics
  • go 效能上報到prometheus - https://github.com/deathowl/go-metrics-prometheus
  • ps utils - https://github.com/shirou/gopsutil
  • 小數處理 - https://github.com/shopspring/decimal
  • 結構化日誌處理(json) - https://github.com/sirupsen/logrus
  • 命令列程式框架 cli - https://github.com/urfave/cli
  • 命令列程式框架 cobra - https://github.com/spf13/cobra

必看專案

  • gin - github.com/olivere/elastic - 輕量級web框架,很多公司都是基於它進行魔改
  • beego - github.com/beego/beego - 也是web框架,比較全能
  • kratos - github.com/go-kratos/kratos - bilibili開源的微服務框架,b站出品必屬於精品
  • TiDB - github.com/pingcap/tidb - 見識過mysql效能瓶頸之後你會想要選擇的一款資料庫

其他優秀的開源工具分類

音訊和音樂

  • EasyMIDI - EasyMidi是一個簡單可靠的庫,用於處理標準Midi檔案(SMF)。
  • flac - 支援FLAC流的Native Go FLAC編碼器/解碼器。
  • gaad - 本機Go AAC位元流解析器。
  • go-sox - 用於go的libsox繫結。
  • go_mediainfo - 用於go的libmediainfo繫結。
  • gosamplerate - 用於go的libsamplerate繫結。
  • id3v2 - 用於Go的快速,穩定的ID3解析和編寫庫。
  • malgo - 迷你音訊庫。
  • minimp3 - 輕量級MP3解碼器庫。
  • mix - 為音樂應用程式基於序列轉到本地音訊混合器。
  • mp3 - Native Go MP3解碼器。
  • music-theory - Go中的音樂理論模型。
  • Oto - 在多個平臺上播放聲音的低階庫。
  • PortAudio - 用於PortAudio音訊I / O庫的繫結。
  • portmidi - 繫結PortMidi。
  • taglib - 為taglib繫結。
  • vorbis - “本機” Go Vorbis解碼器(使用CGO,但沒有依賴項)。
  • waveform - Go程式包,能夠從音訊流生成波形影像。

資料結構

  • algorithms - 演算法和資料結構。CLRS研究。
  • binpacker - 二進位制打包程式和解包程式可幫助使用者構建自定義二進位制流。
  • bit - 具有額外的位旋轉功能的Golang設定資料結構。
  • bitset - 實現位集的Go包。
  • bloom - 在Go中實現的Bloom過濾器。
  • bloom - Golang Bloom過濾器實現。
  • boomfilters - 用於處理連續無界流的機率資料結構。
  • concurrent-writer - 高併發直接替換bufio.Writer。
  • conjungo - 一個小型,強大而靈活的合併庫。
  • count-min-log - 執行Count-Min-Log草圖:使用近似計數器進行近似計數(類似於Count-Min草圖,但使用較少的記憶體)。
  • crunch - Go包實現了用於輕鬆處理各種資料型別的緩衝區。
  • cuckoofilter - Cuckoo過濾器:是Go中實現的計數布隆過濾器的很好替代。
  • deque - 高度最佳化的雙端佇列。
  • deque - 快速的環形緩衝區雙端佇列(雙端佇列)。
  • dict - Go的類似Python的字典(dict)。
  • encoding - Go的整數壓縮庫。
  • go-adaptive-radix-tree - 自適應基數樹的 Go實現。
  • go-datastructures - 有用,高效能和執行緒安全的資料結構的集合。
  • go-ef - Elias-Fano編碼的Go實現。
  • go-geoindex - 記憶體中的地理索引。
  • go-mcache - 快速記憶體鍵:值儲存/快取庫。指標快取。
  • go-rquad - 具有有效點定位和鄰居發現功能的區域四叉樹。
  • gocache - 具有多個儲存(記憶體,memcache,redis等),可連結,可載入,指標快取等的完整Go快取庫。
  • goconcurrentqueue - 併發FIFO佇列。
  • gods - 資料結構。容器,集合,列表,堆疊,地圖,BidiMap,樹,HashSet等。
  • gofal - Go的小數api。
  • golang-set - Go的執行緒安全和非執行緒安全高效能集。
  • goset - Go的有用的Set集合實現。
  • goskiplist - Go中的跳過列表實現。
  • gota - Go的資料框,序列和資料整理方法的實現。
  • hide - ID型別,將其編組進/出雜湊以防止將ID傳送給客戶端。
  • hilbert - Go程式包,用於在空間填充曲線(例如Hilbert和Peano曲線)之間對映值。
  • hyperloglog - HyperLogLog實施,具有稀疏,LogLog-Beta偏差校正和TailCut空間減少功能。
  • iter - C ++ STL迭代器和演算法的實現。
  • levenshtein - Levenshtein距離和相似性度量標準,具有可自定義的編輯費用和通用字首的類似於Winkler的獎金。
  • levenshtein - 在Go中計算levenshtein距離的實現。
  • mafsa - 具有最小完美雜湊的MA-FSA實現。
  • merkletree - merkle樹的實現,可對資料結構的內容進行有效且安全的驗證。
  • mspm - 用於資訊檢索的多字串模式匹配演算法。
  • null - 可空轉到型別,可以被編組/解組到/從JSON。
  • parsefields - 用於解析類似JSON的日誌的工具,以收集唯一的欄位和事件。
  • pipeline - 具有扇入和扇出的管線的實現。
  • ptrie - 字首樹的實現。
  • remember-go - 快取慢速資料庫查詢的通用介面(由redis,memcached,ristretto或記憶體支援)。
  • ring - 圍棋實現了高效能,執行緒安全的布隆過濾器。
  • roaring - 實施壓縮位集的軟體包。
  • set - 使用LinkedHashMap的圍棋設定簡單的資料結構實現。
  • skiplist - 非常快的Go Skiplist實施。
  • skiplist - Go中的跳過列表實現。
  • timedmap - 具有過期的鍵/值對的地圖。
  • treap - 使用樹堆的持久快速排序的地圖。
  • trie - Go中的Trie實現。
  • ttlcache - 記憶體中的LRU字串介面{}對映,其中包含golang的到期時間。
  • typ - 空型別,安全的原始型別轉換和從複雜結構中獲取值。
  • willf/bloom - Go包實現Bloom過濾器。

分散式系統

  • celeriac - 用於在Go中新增支援以互動和監視Celery工作者,任務和事件的庫。
  • consistent - 具有受限負載的一致雜湊
  • dht - BitTorrent Kademlia DHT實施。
  • digota - grpc電子商務微服務。
  • dot - 使用操作轉換/ OT進行分散式同步。
  • doublejump - 改進後的Google的跳轉一致性雜湊。
  • dragonboat - Go中功能齊全的高效能多組Raft庫。
  • drmaa - 基於DRMAA標準的叢集排程程式的作業提交庫。
  • dynamolock - DynamoDB支援的分散式鎖定實現。
  • dynatomic - 將DynamoDB用作原子計數器的庫。
  • emitter-io - 使用MQTT,Websockets和love構建的高效能,分散式,安全和低延遲的釋出-訂閱平臺。
  • flowgraph - 基於流的程式設計包。
  • gleam - 用純圍棋和Luajit快速和可擴充套件的分散式的map / reduce系統,具有Luajit的高效能結合Go的高併發,單獨執行或分發。
  • glow - 易於使用的可擴充套件的分散式大資料處理,Map-Reduce,DAG執行,全部在純Go中進行。
  • go-health - health-用於在服務中啟用非同步依賴項執行狀況檢查的庫。
  • go-jump - Google的“ Jump”一致性雜湊函式的埠。
  • go-kit - 支援服務發現,負載平衡,可插拔傳輸,請求跟蹤等的微服務工具包
  • go-sundheit - 建立用於支援為golang服務定義非同步服務執行狀況檢查的庫。
  • gorpc - 簡單,快速和可擴充套件的RPC庫,可實現高負載。
  • grpc-go - gRPC的Go語言實現。基於HTTP / 2的RPC。
  • hprose - 十分新穎的RPC庫,現在支援25種以上的語言。
  • jsonrpc - jsonrpc軟體包可幫助實現JSON-RPC 2.0。
  • jsonrpc - JSON-RPC 2.0 HTTP客戶端實現。
  • KrakenD - 具有中介軟體的超高效能API閘道器框架。
  • liftbridge - NATS的輕量級,容錯訊息流。
  • micro - 可插拔的microService工具箱和分散式系統平臺。
  • NATS - 用於微服務,IoT和雲本機系統的輕量級高效能訊息傳遞系統。
  • outboxer - Outboxer是一個實現庫模式的go庫。
  • pglock - PostgreSQL支援的分散式鎖定實現。
  • raft - HashiCorp的Raft共識協議的Golang實現。
  • raft - 圍棋實施筏一致協議,由CoreOS的。
  • rain - BitTorrent客戶端和庫。
  • redis-lock - 使用Redis的簡化分散式鎖定實現。
  • resgate - 用於構建REST,實時和RPC API的實時API閘道器,其中所有客戶端都可以無縫同步。
  • ringpop-go - Go應用程式的可擴充套件,容錯應用程式層分片。
  • rpcx - 分散式可插拔RPC服務框架,例如阿里巴巴Dubbo。
  • sleuth - 用於在HTTP服務之間進行無主p2p自動發現和RPC的庫(ZeroMQ
  • tendermint - 高效能中介軟體,用於使用Tendermint共識和區塊鏈協議將以任何程式語言編寫的狀態機轉換為拜占庭容錯複製狀態機。
  • torrent - BitTorrent客戶端軟體包。

電子郵件

  • chasquid - 用Go編寫的SMTP伺服器。
  • douceur - CSS內襯為您的HTML電子郵件。
  • email - 用於Go的強大而靈活的電子郵件庫。
  • go-dkim - DKIM庫,用於簽名和驗證電子郵件。
  • go-imap - 用於客戶端和伺服器的IMAP庫。
  • go-message - Internet訊息格式和郵件訊息的流庫。
  • go-premailer - Go中HTML郵件的內聯樣式。
  • go-simple-mail - 使用SMTP保持活動狀態和兩個超時傳送電子郵件的非常簡單的程式包:連線和傳送。
  • Hectane - 提供HTTP API的輕型SMTP客戶端。
  • hermes - Golang軟體包,可生成乾淨的響應式HTML電子郵件。
  • mailchain - 將加密的電子郵件傳送到用Go編寫的區塊鏈地址。
  • mailgun-go - Go庫,用於使用Mailgun API傳送郵件。
  • MailHog - 透過Web和API介面進行電子郵件和SMTP測試。
  • SendGrid - SendGrid的Go庫,用於傳送電子郵件。
  • smtp - SMTP伺服器協議狀態機。

嵌入式指令碼語言

  • anko - 用Go語言編寫的可編寫指令碼的直譯器。
  • gopher-luabinder - 轉到基於gopher-lua
  • cel-go - 具有漸進式輸入功能的快速,行動式,非圖靈完整表達評估。
  • expr - 可以評估表示式的引擎。
  • gentee - 可嵌入的指令碼程式語言。
  • gisp - Go中的簡單LISP。
  • go-duktape - Go的Duktape JavaScript引擎繫結。
  • go-lua - Lua 5.2 VM到純Go的埠。
  • go-php - Go的PHP繫結。
  • go-python - 與CPython C-API的幼稚go繫結。
  • golua - Lua C API的繫結。
  • gopher-lua - 用Go編寫的Lua 5.1 VM和編譯器。
  • gval - 用Go編寫的高度可定製的表達語言。
  • ngaro - 可嵌入的Ngaro VM實現,支援在Retro中編寫指令碼。
  • otto - 用Go編寫的JavaScript直譯器。
  • purl - Go中嵌入的Perl 5.18.2。
  • tengo - 用於Go的位元組碼編譯指令碼語言。

錯誤處理

  • emperror - Go庫和應用程式的錯誤處理工具和最佳實踐。
  • errlog - 可破解的軟體包,用於確定錯誤的負責任的原始碼(以及其他一些快速除錯功能)。可插入任何現成的記錄器。
  • errors - 下拉更換為標準庫的錯誤包和github.com/pkg/errors。提供各種錯誤處理原語。
  • errors - 提供簡單錯誤處理原語的軟體包。
  • errors - 簡單golang錯誤處理與分類元。
  • errorx - 具有堆疊跟蹤,錯誤組成等的功能豐富的錯誤包。
  • Falcon - 一個簡單但功能強大的錯誤處理軟體包。
  • go-multierror - Go(golang)軟體包,用於將錯誤列表表示為單個錯誤。
  • tracerr - 帶有堆疊跟蹤和原始碼片段的Golang錯誤。
  • werr - 錯誤包裝程式為Go中的錯誤型別建立了一個包裝程式,該包裝程式捕獲了呼叫它的檔案,行和堆疊。

檔案

  • afero - Go的檔案系統抽象系統。
  • afs - Go的抽象檔案儲存(mem,scp,zip,tar,雲:s3,gs)。
  • bigfile - 檔案傳輸系統,支援使用http api,rpc呼叫和ftp客戶端管理檔案。
  • checksum - 計算大型檔案的訊息摘要,例如MD5和SHA256。
  • flop - 檔案操作庫,旨在與GNU cp
  • go-csv-tag - tag-使用標籤載入csv檔案。
  • go-decent-copy - 複製human檔案。
  • go-exiftool - ExifTool的Go繫結,這是眾所周知的庫,用於從檔案(圖片,PDF,office,...)提取儘可能多的後設資料(EXIF,IPTC等)。
  • go-gtfs - 在go中載入gtfs檔案。
  • notify - 具有簡單API的檔案系統事件通知庫,類似於os / signal。
  • opc - 為Go載入Open Packaging Conventions(OPC)檔案。
  • parquet - 讀取和寫入 parquet
  • pdfcpu - PDF 處理器。
  • skywalker - 一種軟體包,允許一個人輕鬆地同時透過檔案系統。
  • stl - 讀取和寫入STL(立體光刻)檔案的模組。併發讀取演算法。
  • tarfs - tar檔案FileSystem interface
  • vfs - 跨多種檔案系統型別(例如os,S3和GCS)的Go的一組可插拔,可擴充套件且自以為是的檔案系統功能。

金融

  • accounting - golang的貨幣和貨幣格式。
  • currency - 高效能和準確的貨幣計算包。
  • decimal - 任意精度定點十進位制數字。
  • go-finance - Go中的綜合金融市場資料。
  • go-finance - 金融功能庫,用於貨幣時間價值(年金),現金流量,利率轉換,債券和折舊計算。
  • go-finance - 獲取匯率,透過VIES檢查增值稅號和檢查IBAN銀行帳號的模組。
  • go-money - Fowler的Money模式的實現。
  • ofxgo - 查詢OFX伺服器和/或解析響應(使用示例命令列客戶端)。
  • orderbook - 匹配引擎的限價訂單在Golang。
  • techan - 具有高階市場分析和交易策略的技術分析庫。
  • transaction - 以多執行緒模式執行的嵌入式帳戶嵌入式事務資料庫。
  • vat - 增值稅號驗證和歐盟增值稅率。

遊戲開發

  • Azul3D - 用Go語言編寫的3D遊戲引擎。
  • Ebiten - Go中死的簡單2D遊戲庫。
  • engo - Engo是用Go語言編寫的開源2D遊戲引擎。它遵循實體元件系統正規化。
  • g3n - Go 3D遊戲引擎。
  • GarageEngine - 用Go語言編寫的2D遊戲引擎,可在OpenGL上使用。
  • glop - Glop(權力遊戲庫)是一個相當簡單的跨平臺遊戲庫。
  • go-astar - A 路徑查詢演算法的Go實現。
  • go-collada - Go包,用於Collada檔案格式。
  • go-sdl2 - Simple DirectMedia Layer
  • go3d - 用於Go的面向效能的2D/3D數學軟體包。
  • gonet - 使用golang實現的遊戲伺服器框架。
  • goworld - 可擴充套件的遊戲伺服器引擎,具有空間實體框架和熱插拔功能。
  • Leaf - 輕量級遊戲伺服器框架。
  • nano - 重量輕,裝置,高效能的基於golang遊戲伺服器架構。
  • Oak - Pure Go遊戲引擎。
  • Pitaya - 可擴充套件的遊戲伺服器框架,具有群集支援和透過C SDK的iOS,Android,Unity等客戶端庫。
  • Pixel - Go中的手工製作2D遊戲庫。
  • raylib-go - 去繫結raylib,簡單和易於使用的庫,以瞭解電子遊戲程式設計。
  • termloop - Go的基於終端的遊戲引擎,建立在Termbox之上。

地理位置

  • geocache - 適用於基於地理位置的應用程式的記憶體中快取。
  • geoserver - geoserver是Go軟體包,用於透過GeoServer REST API操縱GeoServer例項。
  • gismanager - 將 GIS資料(向量資料)釋出到PostGIS和Geoserver。
  • osm - 用於讀取,編寫和使用OpenStreetMap資料和API的庫。
  • pbf - OpenStreetMap PBF golang編碼器/解碼器。
  • S2 geometry - Go中的S2幾何庫。
  • Tile38 - 具有空間索引和實時地理圍欄的地理位置資料庫。
  • WGS84 - 庫座標轉換和變換(ETRS89,OSGB36,NAD83,RGF93,網路墨卡託UTM)。

編譯器

  • c4go - 將C程式碼轉換為Go程式碼。
  • f4go - 將FORTRAN 77程式碼轉換為Go程式碼。
  • gopherjs - 從Go到JavaScript的編譯器。
  • llgo - Go的基於LLVM的編譯器。
  • tardisgo - Golang轉換為CPP / CSharp / Java / JavaScript轉譯器。

Goroutines

  • ants - 用於golang的高效能goroutine池。
  • artifex - Golang使用基於工作程式的分派的簡單記憶體中作業佇列。
  • async - 一種非同步執行功能的安全方法,以防萬一。
  • breaker - 使執行流程可中斷的靈活機制。
  • cyclicbarrier - 用於golang的CyclicBarrier。
  • go-floc - 輕鬆編排goroutine。
  • go-flow - 控制goroutine的執行順序。
  • go-tools/multithreading - 使用帶有簡單API的輕量級庫管理goroutine池。
  • go-trylock - 支援Golang的讀寫鎖的TryLock。
  • go-waitgroup - sync.WaitGroup與錯誤處理和併發控制類似。
  • gohive - Go的高效能和易於使用的Goroutine池。
  • gollback - 非同步簡單函式實用程式,用於管理閉包和回撥的執行。
  • GoSlaves - 簡單和非同步Goroutine池庫。
  • goworker - goworker是基於Go的後臺工作者。
  • gowp - gowp是併發限制goroutine池。
  • gpool - 管理可調整大小的上下文感知goroutine池以繫結併發。
  • grpool - 輕巧的Goroutine池。
  • Hunch - 預感提供功能,如:All,First,Retry,Waterfall等等,這使得非同步流控制更加直觀。
  • oversight - 監督是Erlang監督樹的完整實現。
  • parallel-fn - 並行執行功能。
  • pool - 有限的消費者goroutine池或無限制的goroutine池,以便更輕鬆地處理和取消goroutine。
  • queue - 為您提供sync.WaitGroup類似的佇列組可訪問性。幫助您節流和限制goroutine,等待所有goroutine結束等等。
  • routine - 具有上下文和支援的例程控制:Main,Go,Pool和一些有用的Executors。
  • semaphore - 基於通道和上下文的具有鎖定/解鎖操作超時的訊號量模式實現。
  • semaphore - 基於CAS的快速可調整大小的訊號量實現(比基於通道的訊號量實現更快)。
  • stl - 基於軟體交易記憶體(STM)併發控制機制的軟體交易鎖。
  • threadpool - Golang執行緒池實現。
  • tunny - 執行緒池golang。
  • worker-pool - goworker是一個簡單的Go非同步工作池。
  • workerpool - Goroutine池,它限制了任務執行的併發性,而不是排隊的任務數。

圖形介面

  • app - 打包以使用GO,HTML和CSS建立應用的程式。支援:MacOS,Windows正在開發中。
  • fyne - 為Go設計的跨平臺本機GUI,使用EFL呈現。支援:Linux,macOS,Windows。
  • go-astilectron - 使用GO和HTML / JS / CSS(由Electron支援)構建跨平臺GUI應用。
  • go-gtk - GTK的繫結。
  • go-sciter - Go繫結:用於現代桌面UI開發的可嵌入HTML / CSS / script引擎。跨平臺。
  • gotk3 - GTK3的繫結。
  • gowd - 使用GO,HTML,CSS和NW.js進行快速簡單的桌面UI開發。跨平臺。
  • qt - Go的Qt繫結(支援Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi)。
  • ui - Go的平臺本地GUI庫。跨平臺。
  • Wails - 使用內建OS HTML渲染器的HTML UI的Mac,Windows,Linux桌面應用程式。
  • walk - Go的Windows應用程式庫工具包。
  • webview - 具有簡單雙向JavaScript繫結的跨平臺Webview視窗(Windows / macOS / Linux)。
  • go-appindicator - libappindicator3 C庫的Go繫結。
  • gosx-notifier - Go的OSX桌面通知庫。
  • mac-activity-tracker - OSX庫,用於通知計算機上的任何(可插入)活動。
  • mac-sleep-notifier - golang中的OSX睡眠/喚醒通知。
  • robotgo - Go本機跨平臺GUI系統自動化。控制滑鼠,鍵盤等。
  • systray - 跨平臺的Go庫,用於在通知區域中放置圖示和選單。
  • trayhost - 跨平臺的Go庫,用於在主機作業系統的工作列中放置一個圖示。

圖片

  • bild
  • bimg
  • cameron
  • canvas
  • darkroom
  • geopattern
  • gg
  • gift
  • gltf
  • go-cairo
  • go-gd
  • go-nude
  • go-opencv
  • go-webcolors
  • gocv
  • goimagehash
  • goimghdr
  • govatar
  • image2ascii
  • imagick
  • imaginary
  • imaging
  • img
  • ln
  • mergi
  • mort
  • mpo
  • picfit
  • pt
  • resize
  • rez
  • smartcrop
  • steganography
  • stegify
  • svgo
  • tga

物聯網

  • connectordb
  • devices
  • eywa
  • flogo
  • gatt
  • gobot
  • huego
  • iot
  • mainflux
  • periph
  • sensorbee

JSON格式

  • ajson
  • gjo
  • GJSON
  • go-jsonerror
  • go-respond
  • gojq
  • gojson
  • JayDiff
  • jettison
  • JSON-to-Go
  • json2go
  • jsonapi-errors
  • jsonf
  • jsongo
  • jsonhal
  • kazaam
  • mp

機器學習

  • bayesian
  • CloudForest
  • eaopt
  • evoli
  • fonet
  • go-cluster
  • go-deep
  • go-fann
  • go-galib
  • go-pr
  • gobrain
  • godist
  • goga
  • GoLearn
  • golinear
  • GoMind
  • goml
  • Goptuna
  • goRecommend
  • gorgonia
  • gorse
  • goscore
  • gosseract
  • libsvm
  • neat
  • neural-go
  • ocrserver
  • onnx-go
  • probab
  • regommend
  • shield
  • tfgo
  • Varis

金融

  • unioffice
  • excelize
  • go-excel
  • goxlsxwriter
  • xlsx
  • xlsx

自然語言處理

  • getlang
  • go-i18n
  • go-mystem
  • go-nlp
  • go-pinyin
  • go-stem
  • go-unidecode
  • go2vec
  • gojieba
  • golibstemmer
  • gotokenizer
  • gounidecode
  • gse
  • icu
  • kagome
  • libtextcat
  • MMSEGO
  • nlp
  • nlp
  • paicehusk
  • petrovich
  • porter
  • porter2
  • prose
  • RAKE.go
  • segment
  • sentences
  • shamoji
  • snowball
  • stemmer
  • textcat
  • whatlanggo
  • when

網路

  • arp
  • buffstreams
  • canopus
  • cidranger
  • dhcp6
  • dns
  • ether
  • ethernet
  • fasthttp
  • fortio
  • ftp - 程式包ftp實現RFC 959中所述的FTP客戶端。
  • gev
  • gmqtt
  • gnet
  • gNxI
  • go-getter
  • go-powerdns
  • go-stun
  • gobgp
  • golibwireshark
  • gopacket
  • gopcap
  • goshark
  • gosnmp
  • gosocsvr
  • gotcp
  • grab
  • graval
  • HTTPLab
  • iplib
  • jazigo
  • kcp-go
  • kcptun
  • lhttp
  • linkio
  • llb
  • mdns
  • mqttPaho
  • NFF-Go
  • packet
  • peerdiscovery
  • portproxy
  • publicip
  • quic-go
  • raw
  • sftphttps://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt
  • ssh
  • sslb
  • stun
  • tcp_server
  • tspool
  • utp
  • water
  • webrtc
  • winrm
  • xtcp

影片

  • go-astisub
  • go-astits
  • go-m3u8
  • goav
  • gst
  • libgosubs
  • libvlc-go
  • m3u8
  • v4l

開源書籍

  • Go palyground - 不用搭建本地 Go 環境,線上就編寫 Go 的程式碼
  • Go實戰開發 - 作者是著名的 Go 開源專案 beego 的作者,他的最佳實踐非常值得閱讀
  • Go Web 程式設計 - 跟前面一本書作者是同一位,講的是web開發
  • Go語言標準庫 - 對標準庫的介紹
  • Go入門指南 - 比較適合新手,內容相對基礎一些
  • Go語言聖經 - 書如其名
  • Go語言中文網 - 找對圈子,學的更快
  • 菜鳥教程 - 這個網站非常適合快速上手某門語言
  • Go語言高階程式設計 - 內容適合進階
  • go語言原本 - 歐神出品,雖然號稱進度只有9.9%/100%,但不妨礙它的優秀,值得一看
  • golang設計模式 - 設計模式 Golang實現,《研磨設計模式》的golang實現
  • Go語言四十二章經 - 可以對比查漏補缺

相關文章