SegmentFault 思否技術週刊 Vol.79 — 如何優雅的使用 Go?

Beverly發表於2023-01-31

Go 是 Google 開發的一種靜態強型別、編譯型、併發型,並具有垃圾回收功能的程式語言。

本期技術週刊一起了解 Go,歡迎大家閱讀 ~

文章推薦

Golang 如何優雅接入多個遠端配置中心? // 王中陽Go

viper是適用於go應用程式的配置解決方案,這款配置管理神器,支援多種型別、開箱即用、極易上手。

本地配置檔案的接入能很快速的完成,那麼對於遠端apollo配置中心的接入,是否也能很快速完成呢?如果有多個apollo例項都需要接入,是否能支援呢?以及apollo遠端配置變更後,是否能支援熱載入,實時更新呢?

【Go 基礎篇】徹底搞懂 Channel 實現原理 // 程式設計師祝融

最近大傢俬信我讓我說說 Go 語言中的 Channel,有的人已經開始準備面試,真快呀!今天我們就來說說 Channel嗎,日常開發中使用也是比較頻繁的,面試也是高頻。聽我慢慢說來。

Channel (通道) 是 Go 語言高效能併發程式設計中的核心資料結構和與 Goroutine 之前重要的通訊方式。在 Go 語言中通道是一種特殊的型別。通道像一個傳送帶或者佇列,遵循先入先出(First In First Out)的規則,保證收發資料的順序。

PHP 轉 Go 實踐:xjson 解析神器「開源工具集」 // 王中陽Go

xutil:今天分享的文章源自於開源專案jinzaigo/xutil的封裝。
在封裝過程中,勁仔將實現原理以及相關實踐思考,寫成文章分享出來,從而彙總系列文章集合。

PHP轉Go:我和勁仔都是PHP轉Go,身邊越來越多做PHP的朋友也逐漸在用Go進行重構,重構過程中,會發現php的json解析操作(系列化與反序列化)是真的香,弱型別語言的各種隱式型別轉換,很大程度的減低了程式的複雜度。

反觀go使用標準庫encoding/json,來做json解析就沒有那麼愉快了(只要資料型別定義不對,就很容易拋error)

寫給 go 開發者的 gRPC 教程-通訊模式 // liangwt

前文提到過 protobuf 協議是平臺無關的。演示的客戶端和服務端都是 golang 的,即使客戶端和服務端不同語言也是類似的可以通訊的

對於上面介紹的的這種類似於 http1.x 的模式:客戶端傳送請求,服務端響應請求,一問一答的模式在 gRPC 裡叫做 Simple RPC (也稱 Unary RPC)。gRPC 同時也支援其他型別的互動方式。

Go 語言解析 JSON // 宇宙之一粟

本文將說明如何利用 Go 語言將 JSON 解析為結構體和陣列,如果解析 JSON 的嵌入物件,如何將 JSON 的自定義屬性名稱對映到結構體,如何解析非結構化的 JSON 字串。

你不知道的 goland 技巧 // 阿兵雲原生

很多人使用 Goland 有很長時間的,卻沒有好好利用上 Goland 工具帶給我們的遍歷,今天我們們就來解鎖一下新技巧

過去我們使用 Goland 就是簡單的配置一下 go 的 proxy ,以及配置一下 ssh ,與伺服器進行檔案的上傳和下載,其餘的技巧也就沒有費心去嘗試挖掘和使用了,有沒有同感的童鞋

用 Go 做一個小遊戲

一起用Go做一個小遊戲(上) // darjun

最近偶然看到一個 Go 語言庫,口號喊出“一個超級簡單(dead simple)的 2D 遊戲引擎”,好奇點開了它的官網。

這些瞬間讓我產生了極大的興趣。簡單瀏覽一下文件,整體感覺下來,雖然與成熟的遊戲引擎(如Cocos2dx,DirectX,Unity3d等)相比,ebiten功能還不算豐富。但是麻雀雖小,五臟俱全。ebiten的API設計比較簡單,使用也很方便,即使對於新手也可以在1-2個小時內掌握,並開發出一款簡單的遊戲。更妙的是,Go語言讓ebitengine實現了跨平臺!

接下來的3篇文章,我會介紹ebitengine這個庫。對於遊戲引擎來說,只介紹它的API用法似乎有點紙上談兵。恰好我想起之前看到一個《外星人入侵》的小遊戲,剛好可以拿來練手。那請大家坐穩扶好,我們出發咯。

一起用Go做一個小遊戲(中) // darjun

限制飛船的活動範圍:上一篇文章還留了個尾巴,細心的同學應該發現了:飛船可以移動出螢幕!!!現在我們就來限制一下飛船的移動範圍。我們規定飛船可以左右超過半個身位,如下圖所示:
image.png

一起用Go做一個小遊戲(下) // darjun

使用file2byteslice包我們可以將圖片和config.json檔案打包進二進位制程式中,之後編譯生成一個二進位制程式。然後複製這一個檔案即可,不用再複製圖片和其他配置檔案了。

golang有很多第三方包可以將打包資源,原理其實很簡單——讀取資原始檔的內容,然後生成一個go檔案,在這個檔案中建立一個變數儲存這個檔案的二進位制內容。

問答推薦


# SegmentFault 技術週刊 #

「技術週刊」是社群特別推出的技術內容系列,一週一主題。

每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。

如有問題可以新增小姐姐微信~

image.png

相關文章