在 Go Module 模式底下使用 go get
取得套件的時候常常會有各種版號出現,例如 v1.0.2、v2.0.3 +incompatible、甚至是一段 hash v0.0.0-20200226145339-3e397ee01bc6。 還有取得 v2 版本的時候,有時候是 go get github.com/my/foo@v2.2.0
有時候是 go get github.com/my/foo/v2@v2.2.0
。 為了搞懂這些差別,我參考了一些官方文章還有做了一些實驗,今天就來解說這些差別到底是什麼情況。
在使用 Go 開發網站應用程式的時候,常常會需要重新執行 go run main.go
指令,來測試自己改的程式碼對不對。 同樣的動作做久了,會有點惱人,要是這時候來點 Live-Reload 工具就可以讓開發心情增加 100 分。 就在前幾天發現一個可以 Live-Reload 的工具 codegangsta/gin,雖然這個專案很久了,可是使用起來還是非常的棒阿!!
備註說一下,此 codegangsta/gin 非彼 gin-gonic/gin。 是不一樣的東西喔。
當實作某一個介面的方法的時候,會視是否要 shared state 來決定要用 Pointer Receiver 還是 Value Receiver。 而使用 Pointer Receiver 的時候,會發現不能使用 Value Type 傳給 Interface Value,會出現下面這樣的錯誤。
但是使用 Value Receiver 卻兩種都可以傳,這是為什麼呢?
Continue reading