剛剛結束的關於「Go」語言的技術徵文活動,參與活動的創作者們,撰寫了很多優質技術內容,本期週刊做了彙總,歡迎大家一起閱讀~
本篇文章較長,建議收藏後慢慢閱讀~
文章推薦
【Go 微服務】開發 gRPC 總共分三步 // 王中陽 Go
透過這篇文章我們已經掌握了 gRPC 相關的知識點,可以獨立用 Go 實現客戶端和服務端的編寫,並且透過服務註冊對外提供服務,實現可客戶端和服務端的 gRPC 通訊。
【Go 微服務】一文帶你玩轉 ProtoBuf // 王中陽 Go
在網路通訊和通用資料交換等應用場景中經常使用的技術是 JSON 或 XML,在微服務架構中通常使用另外一個資料交換的協議的工具 ProtoBuf。
ProtoBuf 也是我們做微服務開發,進行 Go 進階實戰中,必知必會的知道點。
PHP 轉 GO 必看:為什麼我覺得 GoFrame 的 garray 比 PHP 的 array 還好用? // 王中陽 Go
在學習 Go 基礎知識的時候瞭解到 Go 的陣列和 PHP 的陣列並不一樣;從一定程度上講,Go的 slice 切片型別和 PHP 的陣列 array 比較像(不固定長度、引用型別、動態擴容等),但是在開發使用中遠遠不像 PHP 的 array 靈活。
透過閱讀原始碼解決專案難題:GToken 替換 JWT 實現 SSO 單點登入 // 王中陽 Go
今天和大家分享一下使用 GoFrame 的 gtoken 替換 jwt 實現 sso 登入的經驗。期間我也踩了一些坑,最終是透過閱讀原始碼解決了專案中遇到的問題。
三分鐘學會 go 語言的變數定義 // 夕水
特別說明: 本文只適合新手學習,這篇文章帶我們入門 go 語言的定義變數的方式,其實和 javascript 很相似,所以特意總結在此。
在 go 語言中,也有變數和常量兩種,首先我們來看變數的定義,定義變數我們分為定義單個變數和多個變數。
前端如何入門 Go 語言 // robin
類比法是一種學習方法,它是透過將新知識與已知知識進行比較,從而加深對新知識的理解。在學習 Go 語言的過程中,我發現,透過類比已有的前端知識,可以更好地理解 Go 語言的特性。
Go 微服務實戰之如何使用 go-micro 寫微服務應用 // 宇宙之一粟
本文介紹了微服務及其相關概念,重點比較了單體架構和微服務架構的區別,最後介紹了 Go 優秀的微服務框架之一的 Go-micro,並展示該框架的安裝和使用。
Go 微服務實戰之如何實現加解密操作的微服務開發 // 宇宙之一粟
本文透過實現加解密操作展示了一個微服務應用的開發過程。透過編寫服務端,成功執行了一個微服務例項,該服務能夠透過加密請求得到一個加密後的密文,透過解密請求將訊息進行解密,並返回明文結果。然後透過編寫客戶端向服務端進行 RPC 呼叫,成功將 Hello world 字串進行加密並列印出密文和明文的結果。
回聲嘹亮 之 Go 的 Echo 框架 —— 上手初體驗 // 宇宙之一粟
Go 語言的 Web 開發框架其實也有很多: Gin 、 Beego 、 Revel 。
Echo 作為其中的一款。截止到 2022 年,目前已經在 Github 上收穫了 21.7k 的 Star 和 1.9k 的 Fork,可以說是經得起時間檢驗,得到了大家的認可,正可謂對應上標題中的回聲嘹亮。
如何在 Go 程式碼中執行 C 語言程式碼 // 宇宙之一粟
我們瞭解到,Go 語言脫胎於 C 語言,這就意味著在某些更底層的細節中,我們可以使用 C 語言實現,然後透過 Go 來呼叫相關的 C 程式碼。其實這一特點,在 Java 的 JVM、Python 的直譯器也是透過底層是直接呼叫 C 實現的。
而本篇文章就來學習一下,如何在 Go 語言中執行 C 程式。
Go 語言如何連線並操作 MySQL 資料庫 // 宇宙之一粟
Go 有 sql 包,它提供了一個圍繞 SQL(或類似 SQL)資料庫的通用介面。 sql 包必須與資料庫驅動程式一起使用。該軟體包提供自動連線池。每次查詢資料庫時,我們都在使用應用程式啟動時設定的連線池中的連線,連線被重用。
Go 十年了,終於想起要統一 log 庫了! // 煎魚
思考一個問題:平時你在寫 Go 工程時,是否很少直接使用官方標準庫 log?
在正式專案中,大多是優先使用幾個爆款第三方庫,例如:Logrus、Zap、zerolog。而標準庫 log,在臨時除錯,螢幕輸出的場景居多,佔比較少。
在 Golang 中依賴注入是 解藥 還是 毒藥? // LinkinStar
回過頭來看我一開始說的觀點其實就不矛盾了,就拿我自己舉例來說,如果是一些小專案,並且很多時候 go 並不是做 web 開發,更多的是做工具那麼 DI 有時候並不一定需要。
但是對於一些大專案來說,我覺得為了以後的考慮,還是別挖坑了,無論是從消除全域性變數還是擴充套件性來說,DI 或者說 OOP 都是非常有必要的。
Gin + GORM 入門到實戰 // 程式設計師海軍
最近一直在學習 Go,目前在做專案熟悉 Go 階段。 本文來分享一下 Gin + GORM 的一些 開發體驗,有喜歡 Go 方向的朋友。
Go入門系列:你好,世界 // 似水流年
Go 原始碼需要先編譯,再分發和執行。如果是單 Go 原始檔的情況,我們可以直接使用 go build 命令 +Go 原始檔名的方式編譯。不過,對於複雜的 Go 專案,我們需要在 Go Module 的幫助下完成專案的構建。
go 如何從零編寫 protoBuf 外掛 // 海生
本期的主要內容將手把手教會大家,編寫 probuf 的 go 外掛,以我自己編寫的一個生成結構體的外掛為例子。
go 語言 web 開發框架 — gin 框架入門 // 良猿
安裝並配置 GO 工作區,在 GOPATH 的 src 目錄下新建專案資料夾,使用 go mod init命令初始化專案,使用 go get -u github.com/gin-gonic/gin 命令安裝 gin。
Go 語言與資料庫 — GORM 入門 // 良猿
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
Golang Copier 入門到入坑 // 小白要生髮
由於 golang 沒有對複雜結構體的 clone 方法,所以,就需要有 copier 這樣的工具庫。
它看起來很簡單,但實際使用中,有些“坑”還是要注意!
動圖圖解!怎麼讓 goroutine 跑一半就退出? // 小白debug
透過 runtime.Goexit() 可以做到提前結束協程,且結束前還能執行到 defer 的內容
runtime.Goexit() 其實是對 goexit0 的封裝,只要執行 goexit0 這個函式,當前協程就會退出,同時還能排程下一個可執行的協程出來跑。
透過 newproc 可以建立出新的 goroutine,它會在函式棧底部插入一個 goexit。
os.Exit() 指的是整個程式退出;而 runtime.Goexit() 指的是協程退出。兩者含義有區別。
Go 中呼叫外部命令的幾種姿勢 // darjun
本文介紹了使用 os/exec 這個標準庫呼叫外部命令的各種姿勢。同時為了便於使用,我編寫了一個 goexec 包封裝對 os/exec 的呼叫。這個包目前 for 我自己使用是沒有問題的,大家有其他需求可以提 issue 或者自己魔改
微服務框架 go-zero 快速實戰 // 阿兵雲原生
go-zero 是一個整合了各種工程實踐的 web 和 rpc 框架。透過彈性設計保障了大併發服務端的穩定性,經受了充分的實戰檢驗。
go-zero 中的 api,rpc,資料庫等涉及的程式碼,都可以給我們一鍵生成,無需耗費我們什麼精力
【5-5 Golang】實戰—Go微服務發現問題分析 // 蕃茄
初次遇到這問題時候,覺得匪夷所思。基於現狀,冷靜分析問題產生情況,一個一個去排查或者排除,切記急躁。
抓包驗證,二進位制協議又不方便分析,只能去研究zookeeper通訊協議了。最終還是需要一遍一遍Review程式碼,尋找蛛絲馬跡,不要忽視任何可能產生的異常。
Go ,淺談包管理模式 // 甜點cc
任何一門程式語言都離不開對各種工具包的使用,工具包的管理就顯得異常重要了。Go 的包管理方式是逐漸演進的,本文介紹 Go 語言的兩種包管理模式。
Go ,函式(包)的使用 // 甜點cc
本文透過一個實現加減乘除運算的小程式來介紹 go 函式的使用,以及使用函式的注意事項,並引出了對包的瞭解和使用。
# SegmentFault 技術週刊 #
「技術週刊」是社群特別推出的技術內容系列,一週一主題。
每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。
如有問題可以新增小姐姐微信~