yue-fang-readfog-go 

feeds.twtxt.net

No description provided.

使用 Go 語言的 bytes 包高效地操作字符串
在編程語言 Go 中,bytes包提供了一系列用於操作[]byte類型的函數,這非常有用,特別是當你需要處理大量的字符串和切片時。通過使用bytes.Buffer,你可以高效地構建和修改字符串,而不必擔心頻繁的內存分配和字符串拼接導致的性能問題。下面,我們將深入瞭解如何使用bytes.Buffer,並通過豐富的示例演示它的強大功能。Buffer 的基本用法————bytes.Buf ⌘ Read more

⤋ Read More

Golang 實現搜索引擎
概述–主要包括三個部分:網絡爬蟲: 爬取儘可能多的網頁; 網頁分詞: 利用jieba庫對網頁內容進行分詞, 並存儲分詞結果(格式爲: 文檔 id, 文檔長度, 詞頻, 分詞偏移 - 文檔 id, 文檔長度, 詞頻, 分詞偏移); 搜索頁面: 提供一個前端頁面, 用戶輸入搜索詞, 基於分詞相關性, 返回結果; 不要害怕,整個邏輯很簡單,邏輯拆分的很獨立,便於理解。項目地址: ht ⌘ Read more

⤋ Read More

Golang 狀態機設計模式
本文介紹了 Golang 狀態機模式的一個實現示例,通過該模式,可以解耦調用鏈,有助於實現測試友好的代碼,提高代碼質量。原文: Go State Machine Patterns[1]導言在我們開發的許多項目中,都需要依賴某種運行狀態從而實現連續操作。這方面的例子包括:解析配置語言、編程語言等 在系統、路由器、集羣上執行操作… ETL(Extract Transform Loa ⌘ Read more

⤋ Read More

Go 語言中,HTTP 請求流式是如何寫入 body 的?
最近在開發一個功能時,需要通過 http 協議上報大量的日誌內容,但是在 Go 標準庫裏的 http client 的 API 是這樣的: http.NewRequest(method, url string, body io.Reader)body 是通過 io.Reader 接口來傳遞,並沒有暴露一個 io.Writer 接口來提供寫入的辦法,先來看看正常情況下怎麼寫入一個 body ,示例 ⌘ Read more

⤋ Read More

Go 項目文件命名規範是什麼?
計算機科學中只有兩件難事:緩存失效和命名。—— 菲爾 · 卡爾頓(Phil Karlton)。在編程世界中,選擇正確的命名約定是打開可讀和可維護代碼大門的重要途徑。在使用 Go 語言開發大型項目時,文件命名是構建清晰項目結構的關鍵一環,一個合理的文件命名規範不僅能提高開發效率,還能降低團隊協作中的溝通成本。在這篇博文中,我們將深入探討 Go 中命名的最佳實踐。在探討 Go 文件命名規範之前,我 ⌘ Read more

⤋ Read More

Google 官方發佈 Go 語言編碼規範
在現代軟件開發中,代碼的可讀性和一致性是至關重要的。尤其是當團隊規模擴大時,遵循一致的編碼規範可以顯著提高代碼的可維護性和團隊協作效率。本文將深入探討 Go 語言的 Google 編碼規範,並結合具體示例,幫助你在實際開發中應用這些規範。爲什麼需要編碼規範?———-編碼規範不僅僅是 “如何寫代碼” 的指導方針,它更是團隊協作的基石。遵守編碼規範可以:提高代碼的可讀性:一致的代碼風格使得 ⌘ Read more

⤋ Read More

在 Golang 中不要簡單的返回 err
相反, 添加相關的調試細節。有些人喜歡抱怨 Go 需要編寫大量的 “ iferr!=nil{returnerr}” 代碼塊。這些人並沒有真正理解 Go 的錯誤處理機制。實際上, 他們抱怨的正是處理 Go 錯誤的完全錯誤方式: returnerr是一種反模式。讓我通過一些示例代碼來解釋我的意思: 一個用於配置 mTLS[1] 連接的輔助庫。(“雙向 TLS” 是向服務器證明客戶端身份的一種方式。)p ⌘ Read more

⤋ Read More

[譯]Go 中的循環依賴:如何解決這個問題
作爲一個 Golang 開發,你可能在項目中遇到過包的循環依賴問題。Golang 不允許循環依賴,如果檢測到代碼中存在這種情況,在編譯時就會拋出異常。本文會討論循環依賴是如何發生的以及如何處理。循環依賴假設我們有兩個包:p1 和 p2。當包 p1 依賴包 p2,包 p2 依賴包 p1 時,就會產生循環依賴。真實情況可能會更復雜一些。例如,包 p2 不直接依賴包 p1 而是依賴於包 p3,而 p3 ⌘ Read more

⤋ Read More

一致性哈希的基本概念及其 Golang 實現
在大規模分佈式系統的世界中,高效地管理和分配數據是一個關鍵挑戰。一種廣泛使用的技術是一致性哈希。這種方法確保數據在多個服務器之間均勻分佈,即使服務器的數量隨時間變化也是如此。本文將探討水平擴展、簡單哈希和一致性哈希的概念,並提供一個 Go 語言的示例實現。水平擴展在分佈式系統中,數據通常無法容納在單個服務器上。爲了處理大規模數據,數據被分佈在多臺機器上,這個過程稱爲水平擴展或分片。爲了確保可預測的 ⌘ Read more

⤋ Read More

探索 Go 語言數據庫查詢的終極指南:深入解析 GORM 的強大查詢功能
一、GORM 基本查詢1、基本查詢func (c UserController) UserSelect() { //1、查詢id=3的用戶 user := models.User{Id: 3} models.DB.Find(&user) //2、查詢所有數據 user := []models.User{} result := models.DB.Find(&user) //5 (統計 ⌘ Read more

⤋ Read More

C 語言竟可以調用 Go 語言函數,這是如何實現的?
大家好,我是飛哥!今天和大家聊一個問題,一門語言是否可以在同一個進程內調用另外一門語言實現的函數?例如 C 語言是否可以調用 Golang 實現的函數?注意我說的是同進程內調用,跨進程的 IPC、PRC 之類的技術不算。直接拋出這個問題的答案,同進程跨語言調用是可行的。在各種語言設計時,爲了複用其它語言生態中積累下來的大量的代碼資產,都會實現跨語言調用的機制。例如在 Golang 中,實現了 cg ⌘ Read more

⤋ Read More

萬字長文:Go 語言現代命令行框架 Cobra 詳解
Cobra 是一個 Go 語言開發的命令行(CLI)框架,它提供了簡潔、靈活且強大的方式來創建命令行程序。它包含一個用於創建命令行程序的庫(Cobra 庫),以及一個用於快速生成基於 Cobra 庫的命令行程序工具(Cobra 命令)。Cobra 是由 Go 團隊成員 spf13 爲 Hugo 項目創建的,並已被許多流行的 Go 項目所採用,如 Kubernetes、Helm、Docker (di ⌘ Read more

⤋ Read More

gojq:現代 Golang JSON 查詢神器
隨着現代應用程序對數據處理和解析需求的不斷增加,JSON 已成爲數據交換的主要格式之一。在 Golang 生態系統中,解析和操作 JSON 數據的工具層出不窮,而 gojq 則是其中一款功能強大且易於使用的 JSON 查詢工具。本文將深入解析 gojq,展示其強大功能和實際應用場景,並通過豐富的示例幫助讀者全面掌握這款利器。什麼是 gojq?———gojq 是一個用 Go 語言編寫的 ⌘ Read more

⤋ Read More

探索併發安全的 Go 語言 Map - 深入理解 cmap
在 Go 語言中,內建的map類型並不是線程安全的。也就是說,如果您在沒有任何併發控制的狀態下,在多個 goroutine 中對同一個map同時進行讀寫操作,那麼會出現競態條件(race condition),進而導致不可預見的結果。針對這一問題,地裏特(lrita)開發了cmap(concurrent-map),一個用於提供併發訪問的線程安全的map類型,它可以讓您在 Go 語言中更加方便地進行 ⌘ Read more

⤋ Read More

Gorm 源碼解析
我們先通過一張圖來看 Gorm 核心主流程。gorm 主流程1. 初始化 DB 連接—————-使用 database.sql 初始化連接。我們平時所說的數據庫驅動其實就是每個數據庫對 DSN 不同的解析方式,最終底層都是使用的 TCP 建立起數據庫連接。type Connector interface { Connect(context.Context) (Conn, err ⌘ Read more

⤋ Read More

go 語言是如何實現協程的
go語言的精華就在於協程的設計,只有理解協程的設計思想和工作機制,才能確保我們能夠完全的利用協程編寫強大的併發程序。Hi,我是 sharkChili ,是個不斷在硬核技術上作死的 java coder ,是 CSDN 的博客專家 ,也是開源項目 Java Guide 的維護者之一,熟悉 Java 也會一點 Go ,偶爾也會在 C 源碼 邊緣徘徊。寫過很多有意思的技術博客,也還在研究並輸出技術的路上 ⌘ Read more

⤋ Read More

聊聊 go 語言基於 epoll 的網絡併發實現
在之前的文章中我們已經介紹了 epoll 模型,而本文就從 go 語言源碼的角度來了解一下,go 語言是如何基於 epoll 模型完成高性能的網絡協程併發程序的。Hi,我是 sharkChili ,是個不斷在硬核技術上作死的 java coder ,是 CSDN 的博客專家 ,也是開源項目 Java Guide 的維護者之一,熟悉 Java 也會一點 Go ,偶爾也會在 C 源碼 邊緣徘徊。 ⌘ Read more

⤋ Read More

Gone 一個基於 Golang 的輕量級依賴注入框架
Gone 一個基於 Golang 的輕量級依賴注入框架Gone 首先是一個輕量的,基於 Golang 的,依賴注入框架,靈感來源於 Java 中的 Spring Framework;其次,Gone 框架中包含了一系列內置組件,通過這些組件提供一整套 Web 開發方案,提供服務配置、日誌追蹤、服務調用、數據庫訪問、消息中間件等微服務常用能力。文檔https://goner.fun/zh/ ht ⌘ Read more

⤋ Read More

這次用 Go 語言實現的多協程文件上傳,效果很明顯
多協程文件上傳是指利用多線程或多協程技術,同時上傳一個或多個文件,以提高上傳效率和速度。通過將文件分塊,每個塊由單獨的協程處理上傳,可以有效減少總上傳時間。Go 語言通過 goroutine 實現多協程文件上傳。多協程文件上傳的基本流程文件分塊:將大文件分成多個小塊,以便多個協程可以同時處理不同的塊。 上傳塊:每個協程負責上傳一個或多個塊。 合併塊:在服務器端接收到所有塊後,將其合併爲 ⌘ Read more

⤋ Read More

每個程序員都應該掌握的 Golang 性能優化祕技
性能分析和優化是所有軟件開發人員必備的技能,也是後臺大佬們口中津津樂道的話題。Golang 作爲一門 “現代化” 的語言,原生就包含了強大的性能分析工具 pprof 和 trace。pprof 工具常用於分析資源的使用情況,可以採集程序運行時的多種不同類型的數據(例如 CPU 佔用、內存消耗和協程數量等),並對數據進行分析聚合生成的報告。trace 工具則關注程序運行時的事件(例如協程狀態切換,G ⌘ Read more

⤋ Read More

xgo: 一款新鮮出爐的 Go 代碼測試利器
大家好,我是江湖十年。我曾經寫過一篇文章《測試代碼終極解決方案 Monkey Patching》,裏面介紹了 Go 語言中的猴子補丁方案。如今,時隔數月我又發現了一款新的工具可以實現 Monkey Patching,本文將帶大家一起嚐鮮下這款新的測試工具表現如何。簡介簡單一句話介紹 xgo:它是一款強大的的 Go 測試工具集,功能包括 Trap、Mock、Trace、增量覆蓋率。當然,開發中最常用 ⌘ Read more

⤋ Read More

使用 Go 語言實現 pping
大家好,我是鳥窩。在前一篇 pping: 被動式 ping,計算網絡時延中,我給大家介紹了 pping 這個工具的原理和使用方法。這篇文章中,我將使用 Go 語言實現 pping 工具。通過這篇文章,你將瞭解到:如何使用 gopacket 來捕獲和解析網絡數據包 如何設置捕獲時長和過濾捕獲的數據包 如何在 CGO 下靜態編譯庫,如 libpcap 瞭解 TCP/IP 協議棧的基本 ⌘ Read more

⤋ Read More

go3d:Go 語言遊戲方向的高性能 2D-3D 數學庫
在面向性能的編程世界中,go3d是爲 Go 語言提供的一款 2D/3D 數學庫,致力於提高圖形計算的效率與速度。適用於那些需要進行向量、矩陣等數學計算以實現圖形處理的應用程序,go3d提供了一套豐富的 API,以支持高效的數學運算。下面,我們將深入瞭解這個庫的主要特性、結構和使用方式,以及如何在項目中有效利用它。主要特性—-高性能設計:go3d庫主要關注於性能,通過優化算法和數據結構來減少計算 ⌘ Read more

⤋ Read More

Go Gio:用 Go 語言編寫跨平臺即時模式 GUI 的庫
在構建現代應用程序的過程中,不同平臺間的兼容性是一個不容忽視的挑戰。Go Gio 是一個用 Go 編程語言開發的庫,它致力於簡化跨平臺 GUI(Graphical User Interface,圖形用戶界面) 的構建工作,提供一種所謂的 “即時” (Immediate Mode) 編程模型。這種模型與傳統的 “保留模式” (Retained Mode) GUI 庫,例如 GTK+ 或 Qt,有所不 ⌘ Read more

⤋ Read More

Go 項目開發中如何讀取應用配置?
幾乎所有的後端服務都需要一些配置項來配置我們的服務,一些小型的項目,配置不是很多,可以選擇只通過命令行參數來傳遞配置,但是大型項目配置很多,通過命令行參數傳遞就變的很麻煩,不好維護,標準的解決方案是將這些配置信息保存在配置文件中,由程序啓動時加載和解析。所以對於一個稍微大型點的系統,配置文件加載和解析就是一個剛需。Go 生態中有很多包可以加載並解析配置,目前最受歡迎的是 Viper 包。Viper ⌘ Read more

⤋ Read More

Cloudflare 最佳實踐:如何通過 Go PGO 回收 CPU
Golang 1.20 在 go 編譯器引入了對配置文件引導優化 (PGO) 的支持。這允許指導編譯器根據系統的真實行爲引入優化。在 Cloudflare 的可觀察性團隊中,我們維護着一些基於 Go 的服務,這些服務在全球範圍內使用數千個內核,因此,即使宣傳的節省 2-7%,也能大幅減少我們的 CPU 佔用空間,而且實際上是免費的。這將減少我們內部服務的 CPU 使用率,釋放這些資源來滿足客戶請求 ⌘ Read more

⤋ Read More

如何構建現代化的 Go 命令行工具?
在 Go 項目開發中,我們需要編寫 main 函數,並編譯成爲二進制文件,部署啓動服務。有多種方式可以開發一個 main 函數。例如你可以手擼一個 main 函數,並在 main 函數中處理命令行參數,配置文件解析,應用初始化等操作。如下所示:package mainimport ( ”flag” ”fmt”)func main() { // 解析命令行參數 option1 := flag.Str ⌘ Read more

⤋ Read More

用 Go 實現一個無界資源池
寫在文章開頭——我們希望通過 go 語言實現一個簡單的資源池,而這個資源池的資源包括但不限於:數據庫連接池 線程池 協程池 網絡連接池 只要這些資源實現我們指定的關閉方法,則都可以通過我們封裝的資源池進行統一管理,需要簡單說明一下這個資源池的要求:需要用戶指定資源以及資源的創建方法。 當協程通過Acquire方法獲取資源時,若發現當前池中有資源可以分配則直接返 ⌘ Read more

⤋ Read More

GitHub 9-8k 的 Go 語言 2D 遊戲引擎 ebiten
前言–hi,大家好,這裏是白澤。今天給大家分享一個 GitHub 🌟9.8k 的 Go 語言 2D 遊戲引擎。https://github.com/hajimehoshi/ebiten引擎的貢獻者依舊在積極維護,是一個兼具學習 & 娛樂的項目!爲此我也用這個引擎寫了一個生存遊戲: avoid-the-enemies【如下圖】:https://github.com/BaiZe1998/avoid-Read more

⤋ Read More

Go 通過 ETCD 實現應用選主
原理Go 服務通過 ETCD client 實現有狀態服務的選主,A、B 兩個服務通過生成相同前綴的 key,並且把自己的 IP 值上傳給 ETCD,由於多個服務間會同時上傳,所以按照相同前綴去獲取創建的 key-value,然後通過時間進行排序,最早創建的則成爲 master。如果成爲 master 的服務一直在線的話,會對 key-value 進行 續約, 當 master 下線不能正常續約的 ⌘ Read more

⤋ Read More

Go 通道的高級玩法
大家好!我是 lincyang。在之前的討論中,我們已經探索了 Go 語言中通道(channel)的基本使用和核心概念。今天,我們將深入探討一些更高級的通道操作技巧,特別是單向通道的使用,以及如何通過它們提高代碼的安全性和模塊性。單向通道的介紹在 Go 中,通道通常是雙向的,意味着它們既可以發送數據也可以接收數據。然而,在某些情況下,限制通道只發送或只接收可以提高程序的可讀性和運行時安全。這就是單 ⌘ Read more

⤋ Read More

Lura:基於 Gin 實現的下一代超高性能 API 網關,支持大量插件!
在快速發展的技術世界中,管理和分發服務變得愈發重要。API 網關作爲一種服務架構模式,爲微服務架構提供了一種高效的管理方式。近年來,Lura(以前稱爲 KrakenD)在開源社區嶄露頭角,以其輕量級和高性能稱爲熱議的焦點。Lura 項目不僅僅是一個 API 網關,它還提供了豐富的中間件,可以幫助開發者在 Linux 環境中更好地管理微服務。接下來我們將深入探討 Lura 的技術架構,以及如何使用其 ⌘ Read more

⤋ Read More

Go 如何編寫出可測試的代碼
之前寫了幾篇文章,介紹在 Go 中如何編寫測試代碼,以及如何解決被測試代碼中的外部依賴問題。但其實在編寫測試代碼之前,還有一個很重要的點,容易被忽略,就是什麼樣的代碼是可測試的代碼?爲了更方便的編寫測試,我們在編碼階段就應該要考慮到,自己寫出來的代碼是否能夠被測試。本文就來聊一聊在 Go 中如何寫出可測試的代碼。本文不講理論,只講我在實際開發過程中的經驗和思考,使用幾個實際的案例,來演示怎樣從根上 ⌘ Read more

⤋ Read More

使用 OpenTelemetry 實現 Golang 服務的可觀測系統
這篇文章中我們會討論可觀測性概念,並瞭解了有關 OpenTelemetry 的一些細節,然後會在 Golang 服務中對接 OpenTelemetry 實現分佈式系統可觀測性。Test Project我們將使用 Go 1.22 開發我們的測試服務。我們將構建一個 API,返回服務的名稱及其版本。我們將把我們的項目分成兩個簡單的文件(main.go 和 info.go)。// file: main. ⌘ Read more

⤋ Read More

單元測試中如何解決文件依賴問題
現如今的 Web 應用程序往往採用 RESTful API 接口形式對外提供服務,後端接口直接向前端返回 HTML 文件的情況越來越少,所以在程序中操作文件的場景也變少了。不過有些時候還是需要對文件進行操作,比如某個 API 接口需要返回應用程序的 ChangeLog,那麼這個接口就可以通過讀取項目的 CHANGELOG.md 文件內容,將其發送給前端。在編寫單元測試時,文件就成了被測試代碼的外部 ⌘ Read more

⤋ Read More

Go 項目中使用 Base64Captcha 快速實現網站的驗證碼功能,內置多種類型的驗證碼
在當今世界,網站的安全性變得越來越重要。驗證碼作爲一種簡單而有效的驗證手段,已經被廣泛應用於各種在線平臺。Base64Captcha 是一個開源的 Go 語言庫,它提供了一個簡單、靈活的方式來生成多種形式的驗證碼,包括數字、字母、數字字母組合、算術式、音頻等形式的驗證碼。本文將深入講解 Base64Captcha 庫的使用方法和特點,幫助你在自己的項目中實現驗證碼功能。Base64Captcha ⌘ Read more

⤋ Read More

Golang 實現異步隊列
源代碼已託管至 Github: https://github.com/gofish2020/easyqueue爲什麼需要異步隊列?———-在高併發系統中,如果同時有大量的請求 / 任務需要進行處理,由於系統的負載能力有限,一次性能夠同時處理的請求 / 任務是有限的。那麼這些任務就需要進行排隊,先來的先處理,後來的後處理。如果超過了整個隊列能夠容納的請求 / 任務,那麼後續的請求 / 任 ⌘ Read more

⤋ Read More

單元測試中如何解決 MySQL 存儲依賴問題
在編寫單元測試的過程中,如果被測試代碼有外部依賴,爲了便於測試,我們就要想辦法來解決這些外部依賴問題。在做 Web 開發時,MySQL 存儲就是一個非常常見的外部依賴,本文就來探討在 Go 語言中編寫單元測試時,如何解決 MySQL 存儲依賴。HTTP 服務程序示例假設我們有一個 HTTP 服務程序對外提供服務,代碼如下: main.gopackage mainimport ( ”encodin ⌘ Read more

⤋ Read More

單元測試中如何解決 Redis 存儲依賴問題
在編寫單元測試時,除了 MySQL 這個外部存儲依賴,Redis 應該是另一個最爲常見的外部存儲依賴了。我在《在 Go 語言單元測試中如何解決 MySQL 存儲依賴問題》一文中講解了如何解決 MySQL 外部依賴,本文就來講解下如何解決 Redis 外部依賴。登錄程序示例在 Web 開發中,登錄需求是一個較爲常見的功能。假設我們有一個 Login 函數,可以實現用戶登錄功能。它接收用戶手機號 + ⌘ Read more

⤋ Read More

Golang 高效處理集合 -Collection- 的庫
處理集合是構建任何應用程序的重要部分。通常,需要以下幾類操作:轉換:將某個函數應用於集合中的每個元素,以創建一個新類型的新集合; 過濾:選擇滿足特定條件的集合中的元素; 聚合:從集合中計算出單個結果,通常用於彙總; 排序 / 排序:根據某些標準重新排列集合的元素; 訪問:根據其屬性或位置檢索元素的操作; 實用程序:與集合一起工作的通用操作,但不一定完全適合上述分類。 ⌘ Read more

⤋ Read More

如何使用 Go 語言優雅地實現接口限流
在衆多 Web 開發中,爲了保障服務器的穩定性,我們常常需要對接口的調用頻率做出限制。而 Go 語言的強大併發性能使其在此領域有出色的表現。本文將向你詳細展示如何利用 Go 語言實現接口限流。限流原理—-接口限流的目標是防止接口被過度調用,保護系統資源,包括 CPU、內存和帶寬等。限流通常應用於以下幾種場景:防止 DDoS 攻擊 控制非法爬蟲 公平分配系統資源 限流的實現方式 ⌘ Read more

⤋ Read More

一致性緩存理論分析與技術實戰
0 前言工程實踐場景中,我們通常用數據庫完成數據的持久存儲,而數據存儲側的性能調優也是一個永恆經典的話題. 在一些請求量大、讀多寫少的場景中,一種性能優化方式是考慮在數據庫之上添加一層緩存組件,這樣一方面能減輕數據庫的訪問壓力,一方面也能提升查詢操作的性能.然而由於緩存(如 redis)和數據庫(如 mysql)是兩個獨立的存儲組件,在操作過程中無法在跨組件的基礎上保證 “事務” 的語義,因此不可 ⌘ Read more

⤋ Read More

單元測試中如何解決 HTTP 網絡依賴問題
在開發 Web 應用程序時,確保 HTTP 功能的正確性是至關重要的。然而,由於 Web 應用程序通常涉及到與外部依賴的交互,編寫 HTTP 請求和響應的有效測試變得具有挑戰性。在進行單元測試時,我們必須思考如何解決被測程序的外部依賴問題。因此,在 Go 語言中,我們需要找到一種可靠的方法來測試 HTTP 請求和響應。本文將探討在 Go 中進行 HTTP 應用測試時,如何解決應用程序的依賴問題,以 ⌘ Read more

⤋ Read More

Golang 實現枚舉的多種方式及最佳實踐
枚舉提供了一種表示一組命名常量的方式。雖然 Go 語言沒有內置的枚舉類型,但開發者可以通過常量 / 自定義類型來模擬類似枚舉的行爲。枚舉在編程語言中扮演着至關重要的角色,提供了一種簡潔而富有表現力的方式來定義一組命名常量。雖然像 Java 或 C# 這樣的語言提供了對枚舉的內置支持,但 Go 採用了不同的方法。在 Go 中,枚舉並不是一種原生的語言特性,但開發者有幾種技術可供使用,以實現類似的功能 ⌘ Read more

⤋ Read More

sqlx: 功能強大的數據庫訪問庫
sqlx[1] 是一個用於擴展標準庫 database/sql 的庫,它提供了一些額外的功能,使得在 Go 中使用 sql 更加方便。sqlx 的目標是保持 database/sql 的簡單性,同時提供更多的功能。sqlx 爲 Go 的標準 database/sql 庫提供了一組擴展。sqlx 中的 sql.Conn、sql.DB、sql.TX、sql.Stmt、sql.Rows、sql.Row ⌘ Read more

⤋ Read More

萬字長文——在 Go 中如何編寫測試代碼
在程序開發過程中,測試是非常重要的一環,甚至有一種開發模式叫 TDD(測試驅動開發),先編寫測試,再編寫功能代碼,通過測試來推動整個開發的進行,可見測試在開發中的重要程度。爲此,Go 語言提供了 testing 框架來方便我們編寫測試,本文將向大家介紹在 Go 中如何編寫測試代碼。測試分類在 Go 中,編寫的測試用例可以分爲四類:單元測試:測試函數名稱以 Test 開頭,如 TestXxx、Tes ⌘ Read more

⤋ Read More

Go FRP:快速反向代理助您穿越 NAT 或防火牆,輕鬆連接互聯網
在當前的互聯網架構中,NAT(網絡地址轉換)和防火牆是常見的網絡安全措施,它們爲內網提供了一層保護。然而,這同時也意味着在不進行特別配置的情況下,外部網絡無法直接訪問內網的服務。爲了解決這一問題,Go FRP(Fast Reverse Proxy)應運而生。它是一個快速的反向代理工具,可以幫助您將內網服務安全地暴露到外網,極大地簡化了穿越 NAT 或防火牆的過程。Go FRP 的工作原理—– ⌘ Read more

⤋ Read More

在 Go 語言中,這樣使用 Json 的
Encode將一個對象編碼成JSON數據,接受一個interface{}對象,返回[]byte和error:func Marshal(v interface{}) ([]byte, error)Marshal函數將會遞歸遍歷整個對象,依次按成員類型對這個對象進行編碼,類型轉換規則如下:bool類型 轉換爲JSON的Boolean 整數,浮點數等數值類型 轉換爲JSON的Number s ⌘ Read more

⤋ Read More