[吐血整理]超全golang面試題合集+golang學習指南+golang知識圖譜+成長路線

xiaobai9發表於2021-04-07

腦圖持續不斷更新中,線上檢視地址
後續文章和內容會不斷更新到 github專案 中,歡迎關注。


  • 其他
  1. 常用包
常用包 說明
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伺服器,這在傳統語言中是無法想象的。



  1. 常用第三方包
地址
資料庫操作 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 github.com/Shopify/sarama github.com/bsm/sarama-cluster
excel 操作 github.com/360EntSecGroup-Skylar/excelize
ppt 操作 golang.org/x/tools/cmd/present
go-svg 操作 github.com/ajstarks/svgo
go 布隆過濾器實現 github.com/AndreasBriese/bbloom
json相關 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
彩色輸出 github.com/mgutz/ansi
表格列印 github.com/olekukonko/tablewriter
reflect 更高效的反射API github.com/modern-go/reflect2
msgfmt (格式化字串,將%更換為變數名) github.com/modern-go/msgfmt
可取消的goroutine github.com/modern-go/concurrent
深度複製 github.com/mohae/deepcopy
安全的型別轉換包 github.com/spf13/cast
從文字中提取連結 github.com/mvdan/xurls
字串格式處理(駝峰轉換) godoc.org/github.com/naoina/go-str...
文字diff實現 github.com/pmezard/go-difflib
uuid相關 github.com/satori/go.uuid github.com/snluu/uuid
去除UTF編碼中的BOM github.com/ssor/bom
圖片縮放 github.com/nfnt/resize
生成 mock server github.com/otokaze/mock
go 效能上報到influxdb github.com/rcrowley/go-metrics
go zookeeper客戶端 github.com/samuel/go-zookeeper
go thrift github.com/samuel/go-thrift
MQTT 客戶端 github.com/shirou/mqttcli
hbase github.com/tsuna/gohbase
go 效能上報到influxdb github.com/rcrowley/go-metrics
go 效能上報到prometheus github.com/deathowl/go-metrics-pro...
ps utils github.com/shirou/gopsutil
小數處理 github.com/shopspring/decimal
結構化日誌處理(json) github.com/sirupsen/logrus
命令列程式框架 cli github.com/urfave/cli
命令列程式框架 cobra github.com/spf13/cobra



  1. 必看專案
專案 地址 說明
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效能瓶頸之後你會想要選擇的一款資料庫



  1. 完整標準庫列表
子包 說明
bufio bytes 提供了對位元組切片操作的函式
crypto 收集了常見的加密常數
errors 實現了操作錯誤的函式
Expvar 為公共變數提供了一個標準的介面,如伺服器中的運算計數器
flag 實現了命令列標記解析
fmt 實現了格式化輸入輸出
hash 提供了雜湊函式介面
html 實現了一個HTML5相容的分詞器和解析器
image 實現了一個基本的二維影像庫
io 提供了對I/O原語的基本介面
log 它是一個簡單的記錄包,提供最基本的日誌功能
math 提供了一些基本的常量和數學函式
mine 實現了部分的MIME規範
net 提供了一個對UNIX網路套接字的可移植介面,包括TCP/IP、 UDP域名解析和UNIX域套接字
os 為作業系統功能實現了一個平臺無關的介面
path 實現了對斜線分割的檔名路徑的操作
reflect 實現了執行時反射,允許一個程式以任意型別操作物件
regexp 實現了一個簡單的正規表示式庫
runtime 包含與Go執行時系統互動的操作,如控制goroutine的函式
sort 提供對集合排序的基礎函式集
strconv 實現了在基本資料型別和字串之間的轉換
strings 實現了操作字串的簡單函式
sync 提供了基本的同步機制,如互斥鎖
syscall 包含一個低階的作業系統原語的介面
testing 提供對自動測試Go包的支援
time 提供測量和顯示時間的功能
unicode Unicode編碼相關的基礎函式
archive tar 實現對tar壓縮文件的訪問
zip 提供對ZIP壓縮文件的讀和寫支援
compress bzip2 實現了bzip2解壓縮
flate 實現了RFC 1951中所定義的DEFLATE壓縮資料格式
gzip 實現了RFC 1951中所定義的gzip格式壓縮檔案的讀和寫
lzw 實現了 Lempel-Ziv-Welch編碼格式的壓縮的資料格式
zlib 實現了RFC 1950中所定義的zlib格式壓縮資料的讀和寫
container heap 提供了實現heap.Interface介面的任何型別的堆操作
lsit 實現了一個雙連結串列
ring 實現了對迴圈連結串列的操作
crypto aes 實現了AES加密(以前的Rijndael)
cipher 實現了標準的密碼塊模式,該模式可包裝進低階的塊加密實現中
des 實現了資料加密標準( Data Encryption Standard,DES)和三重資料加密演算法( TripleData Encryption Algorithm, TDEA)
dsa 實現了FIPS 186-3所定義的資料簽名演算法( Digital Signature Algorithm)
ecdsa 實現了FIPS 186-3所定義的橢圓曲線資料簽名演算法( Elliptic Curve Digital SignatureAlgorithm)
elliptic 實現了素數域上幾個標準的橢圓曲線
hmac 實現了鍵控雜湊訊息身份驗證碼( Keyed-Hash Message Authentication Code,HMAC)
md5 實現了RFC 1321中所定義的MD5雜湊演算法
rand 實現了一個加密安全的偽隨機數生成器
rc4 實現了RC4加密,其定義見Bruce Schneier的應用密碼學( Applied Cryptography)
rsa 實現了PKCS#1中所定義的RSA加密
sha1 實現了RFC 3174中所定義的SHA1雜湊演算法
sha256 實現了FIPS 180-2中所定義的SHA224和SHA256雜湊演算法
sha512 實現了FIPS 180-2中所定義的SHA384和SHA512雜湊演算法
subtle 實現了一些有用的加密函式,但需要仔細考慮以便正確應用它們
tls 部分實現了RFC 4346所定義的TLS 1.1協議
x509 可解析X.509編碼的鍵值和證照
x509/pkix 包含用於對X.509證照、 CRL和OCSP的ASN.1解析和序列化的共享的、低階的結構
database sql 圍繞SQL提供了一個通用的介面
sql/driver 定義了資料庫驅動所需實現的介面,同sql包的使用方式
debug dwarf 提供了對從可執行檔案載入的DWARF除錯資訊的訪問,這個包對於實現Go語言的偵錯程式非常有價值
elf 實現了對ELF物件檔案的訪問。 ELF是一種常見的二進位制可執行檔案和共享庫的檔案格式。 Linux採用了ELF格式
gosym 訪問Go語言二進位制程式中的除錯資訊。對於視覺化除錯很有價值
macho 實現了對Mach-O物件檔案的訪問
pe 實現了對PE( Microsoft Windows Portable Executable)檔案的訪問
encoding ascii85 實現了ascii85資料編碼,用於btoa工具和Adobe’s PostScript以及PDF文件格式
asn1 實現瞭解析DER編碼的ASN.1資料結構,其定義見ITU-T Rec X.690
base32 實現了RFC 4648中所定義的base32編碼
base64 實現了RFC 4648中所定義的base64編碼
binary 實現了在無符號整數值和位元組串之間的轉化,以及對固定尺寸值的讀和寫
csv 可讀和寫由逗號分割的數值( csv)檔案
gob 管理gob流——在編碼器(傳送者)和解碼器(接收者)之間進行二進位制值交換
hex 實現了十六進位制的編碼和解碼
json 實現了定義於RFC 4627中的JSON物件的編碼和解碼
pem 實現了PEM( Privacy Enhanced Mail)資料編碼
xml 實現了一個簡單的可理解XML名字空間的XML 1.0解析器
go ast 宣告瞭用於展示Go包中的語法樹型別
build 提供了構建Go包的工具
doc 從一個Go AST(抽象語法樹)中提取原始碼文件
parser 實現了一個Go原始檔解析器
printer 實現了對AST(抽象語法樹)的列印
scanner 實現了一個Go原始碼文字的掃描器
token 定義了代表Go程式語言中詞法標記以及基本操作標記( printing、 predicates)的常量
hash adler32 實現了Adler-32校驗和
crc32 實現了32位的迴圈冗餘校驗或CRC-32校驗和
crc64 實現了64位的迴圈冗餘校驗或CRC-64校驗和
fnv 實現了Glenn Fowler、 Landon Curt Noll和Phong Vo所建立的FNV-1和FNV-1a未加密雜湊函式
html template 它自動構建HTML輸出,並可防止程式碼注入
image color 實現了一個基本的顏色庫
draw 提供一些做圖函式
gif 實現了一個GIF影像解碼器
jpeg 實現了一個JPEG影像解碼器和編碼器
png 實現了一個PNG影像解碼器和編碼器
index suffixarray 透過構建記憶體索引實現的高速字串匹配查詢演算法
io ioutil 實現了一些實用的I/O函式
log syslog 提供了對系統日誌服務的簡單介面
math big 實現了多精度的算術運算(大數)
cmplx 為複數提供了基本的常量和數學函式
rand 實現了偽隨機數生成器
mime multipart 實現了在RFC 2046中定義的MIME多個部分的解析
net http 提供了HTTP客戶端和伺服器的實現
mail 實現了對郵件訊息的解析
rpc 提供了對一個來自網路或其他I/O連線的物件可匯出的方法的訪問
smtp 實現了定義於RFC 5321中的簡單郵件傳輸協議( Simple Mail Transfer Protocol)
textproto 實現了在HTTP、 NNTP和SMTP中基於文字的通用的請求/響應協議
url 解析URL並實現查詢轉義
http/cgi 實現了定義於RFC 3875中的CGI(通用閘道器介面)
http/fcgi 實現了FastCGI協議
http/httptest 提供了一些HTTP測試應用
http/httputil 提供了一些HTTP應用函式,這些是對net/http包中的東西的補充,只不過相對不太常用
http/pprof 透過其HTTP伺服器執行時提供效能測試資料,該資料的格式正是pprof視覺化工具需要的
rpc/jsonrpc 為rpc包實現了一個JSON-RPC ClientCodec和ServerCodec
os exec 可執行外部命令
user 透過名稱和id進行使用者賬戶檢查
path filepath 實現了以與目標作業系統定義檔案路徑相相容的方式處理檔名路徑
regexp syntax 將正規表示式解析為語法樹
runtime debug 包含當程式在執行時除錯其自身的功能
pprof 以pprof視覺化工具需要的格式寫執行時效能測試資料
sync atomic 提供了低階的用於實現同步演算法的原子級的記憶體機制
testing iotest 提供一系列測試目的的型別,實現了Reader和Writer標準介面
quick 實現了用於黑箱測試的實用函式
script 幫助測試使用通道的程式碼
text scanner 為UTF-8文字提供了一個掃描器和分詞器
tabwriter 實現了一個寫篩選器( tabwriter.Writer),它可將一個輸入的tab分割的列翻譯為適當對齊的文字
template 資料驅動的模板引擎,用於生成類似HTML的文字輸出格式
template/parse 為template構建解析樹
unicode/utf16 實現了UTF-16序列的的編碼和解碼
unicode/utf8 實現了支援以UTF-8編碼的文字的函式和常數



  1. 其他優秀的開源工具分類

  • 音訊和音樂
說明
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語言編寫的可編寫指令碼的直譯器。
binder 轉到基於gopher-lua的 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的 Go繫結。
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 純Go中影像處理演算法的集合。
bimg 使用libvips進行快速有效的影像處理的小包裝。
cameron Go的頭像生成器。
canvas 將向量圖形轉換為PDF,SVG或光柵影像。
darkroom 具有可變儲存後端的影像代理和側重於速度和彈性的影像處理引擎。
geopattern 從字串建立漂亮的生成影像圖案。
gg 純Go中的2D渲染。
gift 影像處理過濾器的包裝。
gltf 高效,強大的glTF 2.0讀取器,寫入器和驗證器。
go-cairo 用於cairo圖形庫的繫結。
go-gd GD庫的Go繫結。
go-nude Go的裸露檢測。
go-opencv 用於OpenCV的繫結。
go-webcolors webcolors庫的埠,從Python到Go。
gocv 使用OpenCV 3.3+進行計算機視覺的Go軟體包。
goimagehash Go感知影像雜湊包。
goimghdr imghdr模組確定Go檔案中包含的影像型別。
govatar 用於生成有趣頭像的庫和CMD工具。
image2ascii 將影像轉換為ASCII。
imagick 繫結到ImageMagick的MagickWand C API。
imaginary 用於影像大小調整的快速,簡單的HTTP微服務。
imaging 簡單的Go影像處理包。
img 選擇影像處理工具。
ln Go中的3D線條藝術渲染。
mergi 用於影像處理(合併,裁切,調整大小,水印,動畫)的Tool&Go庫。
mort 用Go編寫的儲存和影像處理伺服器。
mpo 用於MPO 3D照片的解碼器和轉換工具。
picfit 用Go編寫的影像大小調整伺服器。
pt 用Go語言編寫的路徑跟蹤引擎。
resize 使用常見的插值方法為Go 調整影像大小。
rez 在純Go和SIMD中調整影像大小。
smartcrop 查詢適合任何影像和尺寸的優質作物。
steganography 用於LSB隱寫術的Pure Go庫。
stegify 用於LSB隱寫術的Go工具,能夠隱藏影像中的任何檔案。
svgo 用於SVG生成的Go語言庫。
tga 軟體包tga是TARGA影像格式的解碼器/編碼器。

- 物聯網
說明
connectordb 量化自我和物聯網的開源平臺。
devices IoT裝置庫套件,針對x / exp / io進行實驗。
eywa Project Eywa本質上是一個連線管理器,用於跟蹤連線的裝置。
flogo Project Flogo是一個用於IoT Edge應用和整合的開源框架。
gatt 蓋特是一個圍棋包構建低功耗藍芽外設。
gobot Gobot是機器人技術,物理計算和物聯網的框架。
huego 適用於Go的飛利浦Hue擴充套件客戶端庫。
iot IoT是用於實現Google IoT Core裝置的簡單框架。
mainflux 工業物聯網訊息和裝置管理伺服器。
periph 外設I / O與低階別的主機板裝置介面。
sensorbee 用於物聯網的輕量級流處理引擎。

- JSON格式
說明
ajson 具有JSONPath支援的golang的抽象JSON。
gjo 用於建立JSON物件的小型實用程式。
GJSON 使用一行程式碼獲取JSON值。
go-jsonerror Go-JsonError可讓我們輕鬆建立遵循JsonApi規範的json響應錯誤。
go-respond Go包,用於處理常見的HTTP JSON響應。
gojq Golang中的 JSON查詢。
gojson 從示例JSON自動生成Go(golang)結構定義。
JayDiff 用Go編寫的JSON diff實用程式。
jettison 用於Go的高效能,無反射JSON編碼器。
JSON-to-Go 將JSON轉換為Go結構。
json2go 高階JSON到Go結構轉換。提供可以解析多個JSON文件並建立適合所有JSON的結構的包。
jsonapi-errors 根據JSON API錯誤參考進行繫結。
jsonf 突出顯示格式和獲取JSON的結構查詢的控制檯工具。
jsongo Fluent API,可以更輕鬆地建立Json物件。
jsonhal 簡單的Go包,用於將自定義結構編組為HAL相容的JSON響應。
kazaam 用於JSON文件的任意轉換的API。
mp 簡單的cli電子郵件解析器。當前,它使用標準輸入並輸出JSON。

- 機器學習
說明
bayesian 貝葉斯分類為Golang天真。
CloudForest 快速,靈活,多執行緒的決策樹集合,用於純Go中的機器學習。
eaopt 進化最佳化庫。
evoli 遺傳演算法和粒子群最佳化庫。
fonet 用Go編寫的深度神經網路庫。
go-cluster k模式和k-原型聚類演算法的Go實現。
go-deep Go中功能豐富的神經網路庫
go-fann 快速人工神經網路(FANN)庫的Go繫結。
go-galib 用Go / golang編寫的遺傳演算法庫。
go-pr Go lang中的模式識別包。
gobrain 用go語言編寫的神經網路
godist 各種機率分佈及相關方法。
goga Go的遺傳演算法庫。
GoLearn 用於Go的通用機器學習庫。
golinear Go的liblinear繫結。
GoMind Go中的簡單神經網路庫。
goml Go中的線上機器學習。
Goptuna 用於Go語言編寫的黑盒函式的貝葉斯最佳化框架。一切都會被最佳化。
goRecommend 用Go編寫的推薦演算法庫。
gorgonia 基於圖形的計算庫,例如Theano for Go,它提供了用於構建各種機器學習和神經網路演算法的原語。
gorse 基於Go編寫的協作過濾的離線推薦系統後端。
goscore 用於PMML的Go Scoring API。
gosseract 使用Tesseract C ++庫的OCR(光學字元識別)軟體包。
libsvm 基於LIBSVM 3.14 libsvm的golang版本衍生作品。
neat 用於增強拓撲神經演化(NEAT)的即插即用,並行Go框架。
neural-go go-在Go中實現的多層感知器網路,透過反向傳播進行訓練。
ocrserver 一個簡單的OCR API伺服器,非常容易被Docker和Heroku部署。
onnx-go 轉到開放神經網路交換(ONNX)的介面。
probab 機率分佈函式。貝葉斯推斷。用純Go語言編寫。
regommend 建議和協作過濾引擎。
shield 貝葉斯文字分類器,具有靈活的標記器和Go的儲存後端。
tfgo 易於使用的Tensorflow繫結:簡化了官方Tensorflow Go繫結的使用。在Go中定義計算圖,載入並執行經過Python訓練的模型。
Varis Golang神經網路。

- 金融
說明
unioffice Pure Go庫,用於建立和處理Office Word(.docx),Excel(.xlsx)和Powerpoint(.pptx)文件。
excelize Golang庫用於讀取和寫入Microsoft Excel™(XLSX)檔案。
go-excel 一個簡單而輕便的閱讀器,可以將類似於related-db的excel讀取為表格。
goxlsxwriter libxlsxwriter的Golang繫結,用於編寫XLSX(Microsoft Excel)檔案。
xlsx 用於簡化在Go程式中讀取Microsoft Excel最新版本使用的XML格式的庫。
xlsx 在Go程式中快速/安全地讀取/更新您現有的Microsoft Excel檔案的方法。

- 自然語言處理
說明
getlang 快速自然語言檢測程式包。
go-i18n 用於處理本地化文字的軟體包和一個隨附工具。
go-mystem CGo與Yandex.Mystem的繫結-俄羅斯形態分析儀。
go-nlp 用於處理離散機率分佈的實用程式和其他可用於執行NLP工作的工具。
go-pinyin CN Hanzi至Hanyu拼音轉換器。
go-stem 搬運程式阻止演算法的實現。
go-unidecode Unicode文字的ASCII音譯。
go2vec 用於word2vec嵌入的閱讀器和實用程式功能。
gojieba 這是一個圍棋實施解霸其中中國分詞演算法。
golibstemmer 雪球庫libstemmer庫的繫結,包括porter 2。
gotokenizer 基於字典和Goram語言的Bigram語言模型的標記器。(現在僅支援中文細分)
gounidecode Go的Unicode音譯器(也稱為unidecode)。
gse 進行有效的文字分割;支援英語,中文,日語等。
icu CGO結合為ICU4C C庫檢測和轉換功能。保證與版本50.1相容。
kagome 用純Go語言編寫的JP形態分析儀。
libtextcat libtextcat C庫的Cgo繫結。保證與2.2版相容。
MMSEGO 這是MMSEG的GO實現,它是中文分詞演算法。
nlp 從字串中提取值,並用nlp填充您的結構。
nlp 支援LSA(潛在語義分析)的自然語言處理庫。
paicehusk Paice / Husk提取演算法的Golang實現。
petrovich 彼得羅維奇(Petrovich)是庫,在給定的語法情況下使用俄語名稱。
porter 這是Martin Porter的Porter幹演算法的C實現的相當簡單的移植。
porter2 非常快的Porter 2 提取器。
prose 用於文字處理的庫,支援標記化,詞性標記,命名實體提取等。僅限英語。
RAKE.go 快速自動關鍵字提取演算法(RAKE)的Go埠。
segment 用於執行Unicode標準附件#29中所述的Unicode文字分段的Go庫
sentences 句子標記器:將文字轉換為句子列表。
shamoji shamoji是用Go編寫的單詞過濾程式包。
snowball Go的雪球莖埠(cgo包裝器)。提供單詞詞幹提取功能Snowball本機。
stemmer 用於Go程式語言的Stemmer軟體包。包括英語和德語詞幹。
textcat Go軟體包,用於基於n-gram的文字分類,並支援utf-8和原始文字。
whatlanggo Go的自然語言檢測程式包。支援84種語言和24種指令碼(書寫系統,例如拉丁語,西裡爾字母等)。
when 自然EN和RU語言日期/時間分析器具有可插拔的規則。

- 網路
說明
arp 包arp實現ARP協議,如RFC 826中所述。
buffstreams 透過TCP流化協議緩衝區資料變得容易。
canopus CoAP客戶端/伺服器實施(RFC 7252)。
cidranger Go的快速IP到CIDR查詢。
dhcp6 軟體包dhcp6實現了DHCPv6伺服器,如RFC 3315中所述。
dns 使用DNS的Go庫。
ether 用於傳送和接收乙太網幀的跨平臺Go軟體包。
ethernet 程式包ethernet實施IEEE 802.3乙太網II幀和IEEE 802.1Q VLAN標籤的封送處理。
fasthttp 軟體包fasthttp是Go的一種快速HTTP實現,比net / http快10倍。
fortio 負載測試庫和命令列工具,高階回顯伺服器和Web UI。允許指定設定的每秒查詢負載,並記錄延遲直方圖和其他有用的統計資料並對其進行圖形化。Tcp,Http,gRPC。
ftp 程式包ftp實現RFC 959中所述的FTP客戶端。
gev gev是基於Reactor模式的輕量級,快速,無阻塞的TCP網路庫。
gmqtt Gmqtt是一個靈活的高效能MQTT代理庫,它完全實現了MQTT協議V3.1.1。
gnet gnet是一個高效能的,用純圍棋輕便,非阻塞,事件迴圈網路庫。
gNxI 使用gNMI和gNOI協議的網路管理工具的集合。
go-getter Go庫,用於使用URL從各種來源下載檔案或目錄。
go-powerdns Golang的 PowerDNS API繫結。
go-stun STUN客戶端的Go實現(RFC 3489和RFC 5389)。
gobgp 使用Go程式語言實現的BGP。
golibwireshark 軟體包golibwireshark使用libwireshark庫來解碼pcap檔案並分析解剖資料。
gopacket Go庫,用於使用libpcap繫結進行資料包處理。
gopcap libpcap的包裝器。
goshark 軟體包goshark使用tshark解碼IP資料包並建立資料結構以分析資料包。
gosnmp 用於執行SNMP操作的本機Go庫。
gosocsvr 套接字伺服器變得簡單。
gotcp 用於快速編寫tcp應用程式的Go軟體包。
grab 用於管理檔案下載的軟體包。
graval 實驗性FTP伺服器框架。
HTTPLab HTTPLabs可讓您檢查HTTP請求並偽造響應。
iplib 受python ipaddress和ruby ipaddr啟發而使用IP地址(net.IP,net.IPNet)的庫
jazigo Jazigo是用Go語言編寫的工具,用於檢索多個網路裝置的配置。
kcp-go KCP-快速可靠的ARQ協議。
kcptun 基於KCP協議的極其簡單和快速的udp隧道。
lhttp 強大的websocket框架,可更輕鬆地構建IM伺服器。
linkio 用於讀取器/寫入器介面的網路連結速度模擬。
llb 這是代理伺服器的非常簡單但快速的後端。對於零記憶體分配和快速響應的快速重定向到預定義域很有用。
mdns Golang中的簡單mDNS(多播DNS)客戶端/伺服器庫。
mqttPaho Paho Go客戶端提供了一個MQTT客戶端庫,用於透過TCP,TLS或WebSockets連線到MQTT代理。
NFF-Go 用於快速開發雲和裸機(以前的YANFF)的高效能網路功能的框架。
packet 透過TCP和UDP傳送資料包。如果需要,它可以緩衝訊息和熱交換連線。
peerdiscovery Pure Go庫,用於使用UDP多播的跨平臺本地對等發現。
portproxy 簡單的TCP代理,它將不支援它的API新增到CORS支援中。
publicip 軟體包publicip返回您的面向公眾的IPv4地址(網際網路出口)。
quic-go 在純Go中實現QUIC協議。
raw 包raw允許在裝置驅動程式級別為網路介面讀取和寫入資料。
sftp 程式包sftp實現SSH檔案傳輸協議,如filezilla-project.org/specs/draft-...
ssh 用於構建SSH伺服器的高階API(包裝crypto / ssh)。
sslb 這是一個超級簡單的負載均衡器,只是一個實現某種效能的小專案。
stun 實施RFC 5389 STUN協議。
tcp_server 用於更快地構建tcp伺服器的Go庫。
tspool TCP庫使用工作池來提高效能並保護您的伺服器。
utp 圍棋UTP微傳輸協議的實現。
water 簡單的TUN / TAP庫。
webrtc WebRTC API的純Go實現。
winrm 進入WinRM客戶端以在Windows計算機上遠端執行命令。
xtcp 具有同步全雙工通訊,安全關閉,自定義協議的TCP Server Framework。


  • 影片
說明
go-astisub 在GO中處理字幕(.srt,.stl,.ttml,.webvtt,.ssa / .ass,圖文電視,.smi等)。
go-astits 在GO中本地解析和解複用MPEG傳輸流(.ts)。
go-m3u8 Apple m3u8播放列表的解析器和生成器庫。
goav FFmpeg的綜合Go繫結。
gst GStreamer的繫結。
libgosubs go的字幕格式支援。支援.srt,.ttml和.ass。
libvlc-go libvlc 2.X / 3.X / 4.X的繫結(由VLC媒體播放器使用)。
m3u8 Apple HLS的M3U8播放列表的解析器和生成器庫。
v4l 用Go編寫的Linux影片捕獲庫。



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

  • 影片網課




本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章