原创 Go 每日一庫之 dateparse

簡介 不管什麼時候,處理時間總是讓人頭疼的一件事情。因爲時間格式太多樣化了,再加上時區,夏令時,閏秒這些細枝末節處理起來更是困難。所以在程序中,涉及時間的處理我們一般藉助於標準庫或第三方提供的時間庫。今天要介紹的dateparse專注於一個

原创 Go 每日一庫之 tunny

簡介 之前寫過一篇文章介紹了ants這個 goroutine 池實現。當時在網上查看相關資料的時候,發現了另外一個實現tunny。趁着時間相近,正好研究一番。也好比較一下這兩個庫。那就讓我們開始吧。 快速開始 本文代碼使用 Go Modul

原创 Go 每日一庫之 ants(源碼賞析)

簡介 繼上一篇Go 每日一庫之 ants,這篇文章我們來一起看看ants的源碼。 Pool 通過上篇文章,我們知道ants池有兩種創建方式: p, _ := ants.NewPool(cap):這種方式創建的池子對象需要調用p.Subm

原创 Go 每日一庫之 bubbletea

簡介 bubbletea是一個簡單、小巧、可以非常方便地用來編寫 TUI(terminal User Interface,控制檯界面程序)程序的框架。內置簡單的事件處理機制,可以對外部事件做出響應,如鍵盤按鍵。一起來看下吧。先看看bubbl

原创 Go 每日一庫之 gotalk

簡介 gotalk專注於進程間的通信,致力於簡化通信協議和流程。同時它: 提供簡潔、清晰的 API; 支持 TCP,WebSocket 等協議; 採用非常簡單而又高效的傳輸協議格式,便於抓包調試; 內置了 JavaScript 文件got

原创 Go 每日一庫之 ants

簡介 處理大量併發是 Go 語言的一大優勢。語言內置了方便的併發語法,可以非常方便的創建很多個輕量級的 goroutine 併發處理任務。相比於創建多個線程,goroutine 更輕量、資源佔用更少、切換速度更快、無線程上下文切換開銷更少。

原创 Go 每日一庫之 bytebufferpool

簡介 在編程開發中,我們經常會需要頻繁創建和銷燬同類對象的情形。這樣的操作很可能會對性能造成影響。這時,常用的優化手段就是使用對象池(object pool)。需要創建對象時,我們先從對象池中查找。如果有空閒對象,則從池中移除這個對象並將其

原创 你不知道的 Go 之 slice

簡介 切片(slice)是 Go 語言提供的一種數據結構,使用非常簡單、便捷。但是由於實現層面的原因,切片也經常會產生讓人疑惑的結果。掌握切片的底層結構和原理,可以避免很多常見的使用誤區。 底層結構 切片結構定義在源碼runtime包下的

原创 你不知道的 Go 之 const

簡介 常量可以說在每個代碼文件中都存在,使用常量有很多好處: 避免魔法字面量,即直接出現在代碼中的數字,字符串等。閱讀代碼的時候無法一眼看出它的含義。另外可以避免使用字面量可能出現的不一致,當它們的值需要修改時,常量只需修改一處,而字面量

原创 Go 每日一庫之 fasttemplate

簡介 fasttemplate是一個比較簡單、易用的小型模板庫。fasttemplate的作者valyala另外還開源了不少優秀的庫,如大名鼎鼎的fasthttp,前面介紹的bytebufferpool,還有一個重量級的模板庫quickte

原创 你不知道的 Go 之 string

簡介 字符串(string)是 Go 語言提供的一種基礎數據類型。在編程開發中幾乎隨時都會使用。本文介紹字符串相關的知識,幫助你更好地理解和使用它。 底層結構 字符串底層結構定義在源碼runtime包下的 string.go 文件中: //

原创 Go 每日一庫之 reflect

簡介 反射是一種機制,在編譯時不知道具體類型的情況下,可以透視結構的組成、更新值。使用反射,可以讓我們編寫出能統一處理所有類型的代碼。甚至是編寫這部分代碼時還不存在的類型。一個具體的例子就是fmt.Println()方法,可以打印出我們自定

原创 Go Web 編程之 Hello World

概述 計劃寫一個講 Go Web 編程的系列文章。從基於 net/http 包編寫 Go Web 程序開始,講述處理器,請求,響應等基礎知識。然後到框架的使用。中間會穿插一些源碼的分析。最後做一個實戰項目。 目前 Go 社區已經有非常多關於

原创 Go Web 編程之 響應

概述 上一篇文章中,我們介紹了請求的結構與處理。本文將詳細介紹如何響應客戶端的請求。其實在前面幾篇文章中,我們已經使用過響應的功能——通過http.ResponseWriter發送字符串給客戶端。 但是這種方式僅限於發送字符串。本文我們將介

原创 Go 每日一庫之 go-ini

簡介 ini 是 Windows 上常用的配置文件格式。MySQL 的 Windows 版就是使用 ini 格式存儲配置的。 go-ini是 Go 語言中用於操作 ini 文件的第三方庫。 本文介紹go-ini庫的使用。 快速使用 go-i