寫過 Go 代碼的人,肯定對下面的代碼不陌生: Go 項目中這行代碼會大量存在,這里可能隱藏著陷阱。 1. Go 中的 nil Go 中 nil 代表零值,表示什么都沒有,其...
以太坊是目前第二大公鏈,它和比特幣不一樣,以太坊上的可以實現(xiàn)的功能更多,如果比特幣是一個可以進行加減乘除的計算器,那么以太坊就是一臺功能完備的計算機。以太坊系統(tǒng)的復雜度超過比...
如果對幣圈稍微有些關注的人,這幾個月一定被 NFT 刷屏了。面對一張張賣出天價的 NFT,絕大多數(shù)人都無法理解,其實對于 NFT,貴的不是那張圖,而是大家的共識。 這篇文章暫...
原文地址:https://go.dev/blog/context-and-structs[https://go.dev/blog/context-and-structs] 在...
感謝支持~
Goroutine 是如何運行的在 Go 語言中,沒有線程,只有 goroutine,這也是 Go 語言原生支持高并發(fā)的關鍵。 goroutine 是 Go 語言對協(xié)程的實現(xiàn)。goroutine 非常輕量級...
Go 語言中有一個 container 包,如果只是看這個包名,可能很容易讓人誤解,但這個 container 和 Docker 之類的容器沒有關系。 在 containe...
字符串是一個常見的數(shù)據(jù)類型,在 Go 語言在內的很多語言中,為了安全,都把字符串設計為不可變。每生成一個字符串都是在創(chuàng)建一個新的字符串,而不是在原有字符串的基礎上修改。 在 ...
在 Go 中初始化變量的時候,會用到 make 和 new,如果學習過其他的面向對象語言,比如 Java,可能就會對 new 的使用有點迷惑,Go 中的 new 有著完全不同...
在 Go 語言中,有很多流程控制的語句,if、else 等等,這些流程控制的關鍵字在其他語言中也存在的但 Go 中還有幾個特殊的流程控制關鍵字,defer、panic 和 r...
使用 Go 語言開發(fā)微服務的時候,需要追蹤每一個請求的訪問鏈路,這塊在 Go 中目前沒有很好的解決方案。 在 Java 中解決這個問題比較簡單,可以使用 MDC,在一個進程內...
Go 為了實現(xiàn)更高的并發(fā),自己實現(xiàn)了用戶態(tài)的調度器,稱之為 GMP 模型,在上一篇文章中,我們已經(jīng)簡單分析了它的實現(xiàn)。由于自己實現(xiàn)了 goroutine 的調度器,這也會讓代...
在 Go 語言中,沒有線程,只有 goroutine,這也是 Go 語言原生支持高并發(fā)的關鍵。 goroutine 是 Go 語言對協(xié)程的實現(xiàn)。goroutine 非常輕量級...
在之前的文章中,我們詳細說了 Go 語言中 goroutine + channel 通過通信的方式來共享內存,從而實現(xiàn)并發(fā)編程。 但同時 Go 也提供了傳統(tǒng)通過共享變量,也就...
Go 中有一個 Context 接口,配合 goroutine 使用,主要是用來協(xié)調 goroutine 的執(zhí)行,但是比較難理解,這篇文章中來詳細分析一下。 1. Conte...
在 Go 語言中,創(chuàng)建一個 HTTP 服務很簡單,只需要幾行代碼就可以創(chuàng)建一個可用的 HTTP 服務,這是因為 Go 原生幫我們實現(xiàn)了一個默認的 HTTP 服務,就是 Ser...
Go 語言中的 http 包提供了創(chuàng)建 http 服務或者訪問 http 服務所需要的能力,不需要額外的依賴。在這篇文章中,我們會介紹這些功能的使用,以及看一下 http 包...
在前面兩篇文章中,已經(jīng)詳細的介紹了 goroutine 和 channel,它們是 Go 并發(fā)編程的基礎。今天這篇文章會介紹 Go 并發(fā)編程中另一個重要的角色——多路復用。 ...
在上一篇文章中,我們介紹了 Go 并發(fā)編程的基礎—goroutine,同時也介紹 goroutine 的幾種使用方式,但沒有說明 goroutine 之間是如何通信的。 Go...