golang 每日一庫之 fatih-color
fatih/color 是一個流行的 Go 語言庫,用於在終端中輸出彩色文本和樣式化的內容。由開發者 Fatih Arslan 創建,它簡化了 ANSI 轉義碼的使用,使開發者能夠輕鬆爲 CLI 工具、日誌系統等添加顏色和樣式。特點豐富的顏色和樣式支持 顏色 :支持 16 種基礎前景色(如紅色、綠色)和背景色。 樣式 :支持加粗(bold)、斜體(itali ⌘ Read more
Go 語言中的 LangGraph:基於 LangGraphgo 的 AI 任務編排
在 AI 任務編排領域,LangChain 提供了 LangGraph,幫助開發者搭建複雜、多步驟、有狀態的 AI 工作流。但這個庫主要基於 Python,而在 Go 語言生態中,如何實現類似的 AI 任務編排呢?今天,我們來介紹 langgraphgo,一個爲 Golang 量身定製的 AI 任務流管理框架。通 langgraphgo,你可以高效地構建 AI 代碼審計、對話系統、多智能體協作等應 ⌘ Read more
golang 每日一庫之 jinzhu-now
jinzhu/now 是一個用於增強 Go 語言時間處理的第三方庫,它基於標準庫 time 進行了擴展,提供了更便捷的時間操作功能,適用於需要頻繁處理時間區間、時區轉換或複雜時間解析的場景。以下是該庫的核心功能和用法詳解:一、核心功能時間區間的便捷計算now 庫提供了快速獲取時間區間(如某分鐘的開始 / 結束、某周的開始 / 結束等)的方法,無需手動計算。例如: import ⌘ Read more
golang 每日一庫之 bluele-gcache
bluele/gcache 是一個 高性能、功能豐富的 Go 語言緩存庫,支持多種緩存策略,如 LRU(最近最少使用)、LFU(最少使用頻率)、ARC(自適應緩存替換)等,可以靈活選擇適合的緩存模式。1. 安裝———使用 go get 下載安裝:go get github.com/bluele/gcache然後在代碼中導入:import ”github.com/bluele/gcach ⌘ Read more
Golang 網絡編程:像 C 語言一樣操作 Socket
在 C 語言中,進行網絡編程通常使 socket()、bind()、listen()、accept() 等系統調用,而在 Golang 中,我們既可以使用 net 庫提供的高級封裝,也可以直接使用 syscall 庫進行底層操作。本篇文章將簡單的介紹 Golang 如何像 C 語言一樣進行網絡編程。使用 net 庫進行 TCP 編程(推薦方式)Golang 的 net 包對 socket 進行了封 ⌘ Read more
golang 每日一庫之 gods
在 Go 語言的生態中,數據結構的選擇和實現往往直接影響程序的性能和代碼的可維護性。今天,我們就來聊聊一個備受開發者喜愛的開源項目 gods,它爲我們提供了豐富且易用的數據結構實現,極大地簡化了開發過程中 “造輪子” 的煩惱。項目背景——-gods 是由 Emir Pasic 開發並維護的一個開源庫,旨在爲 Go 語言提供各種常用數據結構和算法的實現。項目採用 MIT 許可證,鼓勵社區貢獻 ⌘ Read more
Golang 實現 IP 全球定位
在 Golang 開發中,如何快速獲取 IP 地址的地理位置?無論是安全審計、日誌分析,訪問控制,還是資產測繪,網絡空間搜索等等都可能需要 IP 定位。本篇文章將介紹常見幾種 Golang IP 定位方案,幫助你選擇最合適的方法。IP 全球定位系統IP 定位系統是利用多種數據庫,如全球城市數據庫、多語言支持庫、IP 地址數據庫以及地圖服務等資源來精準確定用戶位置。藉助於 IP 地理定位 API,我 ⌘ Read more
golang 每日一庫之 go-flags
go-flags 是一個用於處理命令行參數和標誌的 Go 庫,它提供了一種簡潔而靈活的方式來定義和解析命令行標誌(flags)和參數。這個庫對於需要處理命令行輸入的 Go 應用程序非常有用,特別是在構建 CLI(命令行工具)時。1. 安裝 go-flags首先,你需要安裝 go-flags 庫。在命令行中運行以下命令:go get github.com/jessevdk/go-flags這個命令會 ⌘ Read more
golang 每日一庫之 concurrent-map
概述orcaman/concurrent-map/v2 是一個 Go 語言的高性能併發安全哈希表實現。它通過分片鎖(shard locking)策略減少鎖競爭,適用於高併發讀寫場景。與標準庫的 sync.Map 不同,該庫針對通用鍵值類型優化,提供更靈活的 API 和更高性能。項目地址GitHub 倉庫 : https://github.com/orcaman/concurrent- ⌘ Read more
Golang 程序卡死排查指南
我正在幫助某人設置我的 gokrazy/rsync 實現來同步 RPKI 數據(用於保護 BGP 路由基礎設施),當時我們發現,在特定調用方式下,我的 rsync 接收器會無限期掛起。這個問題很快就解決了,但在這個過程中,我意識到我應該記錄下這些年來我所欣賞的一些 Go 調試技巧!場景:Go 程序掛起———-如果你想跟着實驗,可以構建 gokrazy/rsync 的一個較舊版本,就在修 ⌘ Read more
使用 Golang 編寫 2D 遊戲
Ebitengine 是一款基於 Go 語言的 2D 遊戲開發引擎,提供了簡單易用的 API 和跨平臺的支持,開發者可以通過它輕鬆構建遊戲項目。核心特性——-跨平臺支持 Ebitengine 支持多個平臺,包括 Windows、macOS、Linux,以及 WebAssembly(可運行於瀏覽器中)。這使得開發者可以在不同設備上運行同一個遊戲項目,而無需編寫額外的代碼。易用的 API ⌘ Read more
golang 面試題:Goroutinue 什麼時候會被掛起?
今天我們來聊聊一個在 Go 面試中經常遇到的經典問題:Goroutine 什麼時候會被掛起?如果你是一個 Go 程序員,或者正在準備 Go 相關的面試,可能對這個問題有一些疑問。那麼,就讓我從一個資深程序員的角度,帶你們深入淺出地分析這個問題。💡什麼是 Goroutine?首先,咱們得搞清楚什麼是 Goroutine。簡而言之,Goroutine 就是 Go 中的輕量級線程。它讓我們可以用極低的成 ⌘ Read more
golang 每日一庫之 gocarina-gocsv
一、爲什麼選擇 gocsv?Go 標準庫 encoding/csv 提供了基礎的 CSV 讀寫能力,但在處理複雜業務時常常需要:手動轉換字符串到具體類型 維護列索引與結構字段的映射關係 處理嵌套結構等複雜數據類型 處理可選字段和默認值 gocarina/gocsv 通過結構體標籤實現了聲明式的 CSV 解析,極大簡化了開發流程。最新統計顯示,該庫在 GitHub 已獲得 1 ⌘ Read more
Golang 高性能編程:內存對齊的藝術
有些 Golang 程序運行得像一陣風,而有些卻慢得像在爬坡?答案可能藏在一個不起眼但至關重要的細節裏——內存對齊。今天,我們就來聊聊這個聽起來有點 “硬核”,但其實非常有趣的話題。我會用輕鬆的方式帶你走進內存對齊的世界,分享一些實用技巧和真實案例,讓你的 Golang 程序跑得更快!引言:一次意外的性能提升 ————-那是一個普通的週三下午,我正在優化一個 Golang 項目。 ⌘ Read more
golang 每日一庫 samber-lo
samber/lo 是一個非常流行的 Go 語言庫,它提供了一些常用的函數式編程風格的工具函數,使得 Go 代碼更加簡潔、優雅。該庫的設計理念是減少代碼冗餘,簡化開發過程,尤其是在處理常見的數據結構和算法時。lo 這個庫的名字來源於 “Lazily Optimized” 的縮寫,但它本身並不涉及延遲計算或優化策略。它的目標是提供一系列常見操作的簡便方法,尤其是集合類型(如切片、映射、通道等)的操作 ⌘ Read more
golang 每日一庫之 pressly-goose
pressly/goose 是一個用於 Go 語言的數據庫遷移工具。它提供了一種簡單且高效的方式來管理數據庫 schema 的版本控制,適用於數據庫結構變更的管理和遷移。goose 的設計目標是讓數據庫遷移更加簡便、安全,並且在多環境下可以輕鬆應用。數據庫遷移通常用於在應用程序中管理數據模式的變化(例如添加表、修改列、刪除索引等),尤其在團隊協作開發、生產環境發佈等情境下,遷移工具幫助開發者和運維 ⌘ Read more
golang 每日一庫之 iancoleman-orderedmap
github.com/iancoleman/orderedmap 是一個 Go 語言庫,提供了一個有序字典(OrderedMap)實現,區別於 Go 語言內建的 map 類型,內建的 map 是無序的。該庫的 OrderedMap 能夠保持元素的插入順序,因此適用於需要按插入順序遍歷元素的場景。主要特點:有序性:OrderedMap 保證元素的插入順序,和內建的 map 類型不同, ⌘ Read more
golang 每日一庫之 swaggo
Go Swagger(Swaggo)是一個用於 Go 語言的開源工具集,它幫助開發者自動生成 API 文檔。它利用 Go 的註釋和結構體信息,通過解析代碼,生成符合 OpenAPI 規範的文檔。OpenAPI(也稱爲 Swagger)是一個廣泛使用的 API 規範,它使得 API 文檔更加標準化、易於理解和交互。Swaggo 主要的功能包括:1. 自動生成 OpenAPI 文檔Swaggo 通過解 ⌘ Read more
golang 每日一庫之 govalidator
govalidator 是一個用 Go 語言編寫的輕量級的驗證庫,提供了豐富的驗證和清理功能,主要用於驗證和清理用戶輸入的數據(如表單數據、API 請求的 JSON 數據等)。它支持常見的數據驗證功能,如電子郵件、URL、IP 地址、信用卡號等的驗證,同時也支持自定義驗證規則。1. 安裝你可以通過 go get 來安裝 govalidator:go get github.com/asaskevic ⌘ Read more
golang 面試官:for select 時,如果通道已經關閉會怎麼樣?如果只有一個 case 呢?
今天咱們聊點技術性的東西,具體說一下 Go 語言中的 for select 語句,特別是在面試中經常被問到的兩個問題。題目 1:for select 語句中,如果通道已經關閉了,會怎麼樣?這道題乍一聽簡單,但其實是面試官最喜歡用來考察你是否真正理解 Go 中通道機制的題目之一。假設你在寫一個需要從通道讀取數據的程序,然後突然有人關了通道,你會怎麼處理?程序會怎麼樣?如果你把這個問題想得很簡單,你可 ⌘ Read more
Golang Web 單體項目目錄結構最佳實踐
在 Golang 開發 Web 項目的過程中,如何組織目錄結構是一項至關重要的任務。合理的目錄結構不僅能提高代碼的可維護性,還能爲團隊協作提供清晰的代碼規範。今天,我們就來探討一個 Golang Web 單體項目的最佳目錄結構,並通過詳細的代碼示例解析其中的分層設計,以下就是我的最佳實踐方案。爲什麼要設計合理的目錄結構?在 Golang 項目中,代碼的組織方式會影響開發效率和項目的擴展性。如果目錄 ⌘ Read more
Golang 使用反射實現漏洞插件管理
在安全檢測領域,我們經常需要實現一個插件體系,以支持和管理不同類型的漏洞檢測插件。例如,SQL 注入掃描、XSS 檢測等插件應該可以動態加載、統一管理,並按需執行。本文將會介紹如何使用 Golang 反射(reflection) 構建一個可擴展的漏洞檢測插件系統,包括 插件註冊、管理、調用,我會提供完整的 demo 代碼和項目結構來幫助你理清思路。下面就開始我們今天的內容吧!!!🚀🚀🚀項目目錄結構 ⌘ Read more
golang 每日一庫之 spf13-viper
spf13/viper 是一個非常流行的 Go 語言庫,主要用於處理應用程序的配置文件。它提供了一種靈活且強大的方式來讀取、解析和管理不同來源的配置數據,比如文件、環境變量、命令行參數等。Viper 以其簡潔、易用以及高度的可定製性在 Go 生態中廣受歡迎。1. Viper 的核心功能Viper 主要用於配置管理,它支持從不同來源加載配置、處理複雜的數據結構、以及提供對配置項的靈活訪問。以下是 V ⌘ Read more
Golang Option 模式看這一篇就夠了
在 Go 語言中,我們經常需要定義結構體,並通過構造函數初始化它們。然而,Go 不支持默認參數,如果一個結構體有很多可選參數,我們會面臨以下問題:構造函數參數過長,調用時不夠直觀。 需要維護多個 NewXXX 函數,擴展性較差。 代碼可讀性降低。 爲了解決這個問題,Golang 社區廣泛採用 Option 模式,讓我們可以優雅地管理可選參數。本文將詳細講解 Option 模式的 ⌘ Read more
Hiring: Senior FullStack Engineer | Remote (Brazil) | | A new challenge awaits!
What are we looking for? 👀
Most Important 🎯
- 7 years of experience in Fullstack Software Development.
- Proficiency in Golang and Ruby on Rails for backend development.
- Strong experience with TypeScript and React for frontend development.
- Solid understanding of GraphQL and microservices architecture.
- Experience working with PostgreSQL, MongoDB, or DynamoDB.
- Hands-on experience with unit & integration testing to ensure code reliability.
- Famil … ⌘ Read more
My take on the discussion to introduce an ? operator in Go 👈 No. For so many reasons.
My take on the discussion to introduce an ? operator in Go 👈 No. For so many reasons. ⌘ Read more
golang 每日一庫之 shopspring-decimal
shopspring/decimal 是一個用於處理任意精度十進制浮點數的 Go 語言庫,通常用於金融計算、貨幣相關計算等場景。標準的 float64 類型可能無法滿足精確度要求,因爲浮點數的表示方式是近似的,特別是在進行累加、除法和精確比較時可能會導致舍入誤差。shopspring/decimal 提供了一個高精度的十進制類型 decimal.Decimal,它確保在進行數學運算時不丟失精度。這 ⌘ Read more
golang 每日一庫之 jinzhu-copier
這都 2025 年了,你還在一個一個手動複製字段嗎?jinzhu/copier 是一個 Go 語言庫,用於深度複製結構體(struct)及其字段,支持嵌套結構體、切片、數組等的複製。這個庫的主要目標是通過簡單的 API 提供高效、易用的對象複製功能,避免手動編寫複製邏輯。核心特性:深度複製支持深度複製結構體及其嵌套字段,包括切片、數組、映射(map)等。 對象的字段會遞歸地被複制到目標對象中 ⌘ Read more
[LFH] Revuo Monero is looking for python and golang (hugo) contributors!
There are a handful of open issues in Revuo Monero’s repositories: Calc and main. Feel free to take a peek and help if you are capable of and got the volunteering enthusiasm in you!
Links:
rottenwheel.com ⌘ Read more
使用 Golang 監控網絡速度
使用 Golang 監控網絡速度—————-在分佈式系統、實時應用和流媒體服務中,監控網絡速度可以幫助識別潛在的瓶頸、優化性能並提升用戶體驗。本文將介紹如何使用 Golang 構建一個高效的網絡速度監控工具,適合技術人員學習和參考。引言–網絡速度監控對於確保系統穩定運行至關重要。隨着互聯網用戶需求的增長,檢測網絡帶寬、下載和上傳速度成爲關鍵任務。Golang 以其高效的併發 ⌘ Read more
@prologic@twtxt.net YEAH it’s so cool!!! i was thinking about trying it as sorta practice for golang lol
fighting for my life trying to learn golang WHAT THE FUCK IS A POINTER (rhetorical)
i like this little ideas utility i’ve been using like i keep pulling up the idea table to see what i’ve added and it makes me wanna start one of them like the CLI app i wanna write in golang with charmbracelet’s bubbletea even though i only have a vague idea of what i want in a CLI app
如何使用 Golang 進行 Kafka 的監控
Kafka 是一個高吞吐量、可擴展的分佈式消息系統,廣泛應用於實時數據流處理場景。監控 Kafka 是確保其平穩運行和及時處理問題的關鍵。本文將介紹如何使用 Golang 來執行 Kafka 的監控任務。前置準備—-安裝依賴庫: 安裝 Sarama,用於 Kafka 的操作$ go get github.com/Shopify/sarama 安裝 Kafka 管理擴展$ go get g ⌘ Read more
爲你的 Go 應用添加定時任務
在 Linux 上,我們經常使用計劃任務來執行一些定時任務,比如,在凌晨執行數據庫備份、進行賬務日結操作等。在我們的 Golang 應用中,我們也想執行一些定時任務,怎麼辦?cron 是 Golang 的一個定時任務庫,被廣泛應用於 Golang 應用中。cron 目前使用的 V3 版本,默認支持 Linux cron 表達式,沒有秒的字段。Linux cron 表達式格式: comma ⌘ Read more
really wanna make an ssh zine app inspired by a telnet zine cms i found on github. i’m gonna probably go ahead with the telnet zine idea i have if i can get people for it but if i could build my own ssh mirror for it with golang and the charmbracelet wish library that’d be epic
Go Protobuf 新增全新不透明 API
Protobuf 是 Google 的語言中立的數據交換格式。早在 2020 年 3 月,就發佈了 google.golang.org/protobuf 模塊,這是對 Go protobuf API 的重大修訂。該包引入了對反射的一流支持、一個 dynamicpb 實現和 protocmp 包,以便於測試。現在,我們將爲生成的代碼發佈一個新的 API,我們將說明創建新 API 的動機,並展示如何在 ⌘ Read more
Golang 中的 Context 如何讓代碼更智能、更安全、更易於擴展
Go 開發中,context 包已經成爲一個必不可少的工具。它提供了一種在不同的 goroutine 之間傳遞請求範圍內變量、取消信號和截止時間的方法。通過合理地使用 context,我們可以使代碼變得更智能、更安全,並且更易於擴展。本文將詳細探討 context 的作用以及如何在實際開發中應用它。什麼是 Context?————context 是 Go 1.7 引入的一個標準庫 ⌘ Read more
Golang workspace 多模塊工作區是真的好
最近,使用了 Golang workspace,它是真的好。今日推薦給大家。Golang 在 1.18 版本開始支持多模塊工作區。使用多模塊工作區,可以幫助您同時在多個模塊中編寫代碼,並在這些模塊中輕鬆構建和運行代碼。要創建多模塊工作區,請確保你安裝的 Go 版本在 1.18 及以上纔行。我們以 Windows 爲例,演示如何創建工作區。一、創建一個目錄叫 workspace,這個是工作區的名稱。 ⌘ Read more
微服務的終極 Golang 框架:GoFr
前言–Go 語言因其出色的併發處理能力和簡潔的語法,成爲開發微服務的理想選擇。而 GoFr 框架則是一個專門爲構建 Go 微服務而設計的框架,它提供了一套完整的工具和最佳實踐,幫助開發者快速構建可靠的微服務應用。GoFr 框架簡介———GoFr 是一個專注於簡單性和性能的微服務框架。它的主要特點包括:零依賴:框架本身不依賴於任何第三方包 高性能:經過優化的路由和中間件系統 ⌘ Read more
golang 新一代標準日誌庫 slog
log/slog 是 Go 1.21 引入的一個新的日誌記錄包,旨在提供比傳統 log 包更靈活和現代化的日誌功能。它支持結構化日誌、可配置的日誌級別、靈活的日誌輸出格式等功能,彌補了舊版 log 包的不足。對比舊版 log 包 | 特性 | log | slog || — | — | — || 日誌級別支持 | 無 | 內置支持(Debug、Info 等) || 結構化日誌 | ⌘ Read more
Go 源碼是如何解決測試代碼循環依賴問題的?
最近我寫了一篇講解 context 包源碼的文章《Go 併發控制:context 源碼解讀》,在閱讀源碼的過程中,我在 context 包測試代碼中發現了一個解決循環依賴的小技巧,在此分享給大家。xtest.go 解決循環依賴context 包源碼目錄結構如下: https://github.com/golang/go/tree/go1.23.0/src/context$ tree contex ⌘ Read more
Gin 框架怎麼實現驗證請求參數和返回響應數據的函數?
大家好,我是 frank。「Golang 語言開發棧」公衆號作者。01 介紹在使用 Gin 框架開發時,入口函數通常需要支持驗證請求參數和返回響應數據。我們可以將驗證請求參數和返回響應數據整合爲一個通用函數。然後,結合響應數據返回中間件,實現通過一個函數,實現驗證請求參數和返回響應數據 的功能。02 請求參數驗證和返回響應數據首先,我們需要定義一個自定義結構體類型 Response,示例代碼: ⌘ Read more
Go 高級構建指南
本文將探索 Golang 高級構建技巧,從而有助於創建更高效的二進制文件。原文: Advanced Go Build Techniques[1]構建選項以下是 go build 命令最常用的一些選項:-o: 指定輸出文件名。默認輸出文件名是主軟件包的名稱,在 Windows 系統中會自動添加 .exe 後綴。 -v: 詳細輸出。該選項會在編譯時打印軟件包的名稱。 -work: 打印 ⌘ Read more
Go - Ollama 在本地構建你的 RAG 應用
這篇文章會引導大家使用 Golang 設置本地大型語言模型 (LLM) 並與之交互,以此在本地構建你的 AI 應用。設置本地 LLM首先,我們需要在本地計算機上運行 LLM。爲此,我們將使用 Ollama(可在 GitHub ollama[1] 上獲取)。雖然本地加載模型有多種選擇,但我發現 Ollama 是相對容易使用的。Ollama 支持 macOS、Linux 和 Windows。本文的代碼 ⌘ Read more
推薦一個 Go 版本的支付庫
gopay 是一個使用 Golang 編寫的支付庫。現在支持微信、支付寶、QQ、通聯支付、拉卡拉、PayPal。使用方法如下:引入 gopay 庫go get -u github.com/go-pay/gopay使用示例:import ( “github.com/go-pay/gopay” “github.com/go-pay/xlog”)func main() { xlog.I ⌘ Read more
kcp 協議的 Golang 實現庫
kcp-go 是 Golang 實現的 kcp 協議庫,它是可靠的 UDP 庫。該庫 kcp-go 旨在通過 UDP 數據包提供流暢、有彈性、有序、經過錯誤檢查和匿名的流傳遞。該庫和開源項目 kcptun 經過了戰鬥測試。從低端 MIPS 路由器到高端服務器,數以百萬計的設備在各種應用中部署了基於 kcp-go 驅動的程序。包括在線遊戲、直播、文件同步和網絡加速。我們介紹一下 kcp 協議,kcp ⌘ Read more
GoLang 如何獲取用戶輸入
fmt.Scanln() 與 fmt.Scanf() 需求場景:數就非常有用。比如,創建一個任務管理工具,可能需要用戶輸入任務名稱、截止日期等信息,這時就可以使用 fmt.Scanln () 或 fmt.Scanf () 來接收用戶輸入。 對於一些需要用戶交互的小型應用程序,比如簡單的計算器程序,可能需要用戶輸入數字和運算符,fmt.Scanf () 可以按照指定的格式接收 ⌘ Read more
理解 Go 協程調度的本質
作者:jiayan golang 的一大特色就是 goroutine,它是支持高併發程序的重要保障;通過 go 關鍵字我們就能輕易創建大量的輕量級協程,但它和我們認知中的線程有什麼區別呢,輕量在哪裏,具體是如何進行調度的….. 本文將從涉及到的一些基礎知識開始,逐步介紹到 go 協程調度的核心原理,希望你能有所收穫~ 函數調用棧進程在內存中的佈局首先回顧下進程的內存佈局~ 操作系統把磁盤上 ⌘ Read more
Go 開發者的密碼學導航:crypto 庫使用指南
Go 號稱 “開箱即用”,這與其標準庫的豐富功能和高質量是分不開的。而在 Go 標準庫中,crypto 庫(包括 crypto 包、crypto 目錄下相關包以及 golang.org/x/crypto 下的補充包) 又是 Go 社區最值得稱道的 Go 庫之一。crypto 庫由 Go 核心團隊維護,確保了最高級別的安全標準和及時的漏洞修復,爲開發者提供了可靠的安全保障。crypto 還涵蓋了從基 ⌘ Read more