當用 Go 操作檔案的時候,很常會用到 os.OpenFile 讀寫檔案,而其中最後一參數 perm FileMode 所代表的含意對於 Windows 使用者來說肯定是黑人問號,例如下列範例,傳入 os.FileMode(0660) 代表什麼意思?

1
os.OpenFile("file.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, os.FileMode(0660))

如果你也有同樣的困惑,今天這篇文章就是來解答其背後的意義,就讓我們開始吧。

Continue reading

在 Go Module 模式底下使用 go get 取得套件的時候常常會有各種版號出現,例如 v1.0.2v2.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。 為了搞懂這些差別,我參考了一些官方文章還有做了一些實驗,今天就來解說這些差別到底是什麼情況。

Continue reading

在使用 Go 開發網站應用程式的時候,常常會需要重新執行 go run main.go 指令,來測試自己改的程式碼對不對。 同樣的動作做久了,會有點惱人,要是這時候來點 Live-Reload 工具就可以讓開發心情增加 100 分。 就在前幾天發現一個可以 Live-Reload 的工具 codegangsta/gin,雖然這個專案很久了,可是使用起來還是非常的棒阿!!

備註說一下,此 codegangsta/gin 非彼 gin-gonic/gin。 是不一樣的東西喔。

Continue reading

當實作某一個介面的方法的時候,會視是否要 shared state 來決定要用 Pointer Receiver 還是 Value Receiver。 而使用 Pointer Receiver 的時候,會發現不能使用 Value Type 傳給 Interface Value,會出現下面這樣的錯誤。

Cannot use ‘u’ (type user) as type notifier Type does not implement ‘notifier’ as ‘notify’ method has a Pointer Receiver

但是使用 Value Receiver 卻兩種都可以傳,這是為什麼呢?

Continue reading

[Go] Gorilla Sessions

in Go

在開發網站的時候,有時候也會用到 sessions 來記錄狀態。 在這裡我們可以使用 github.com/gorilla/sessions 套件來輕鬆管理 sessions。

Continue reading

在網站開發上,常常會用 快取(cache) 來提升回應時間,或者是減少對資料庫的操作等等…。 而 Go 的標準函式庫並沒有提供 cache 的實作,但是我們可以使用別人寫好的函示庫來實作 cache。

在 GitHub 上有幾個不錯的 cache 實作,例如 freecachego-cache,而今天這篇文章會以 go-cache 當作範例。

Continue reading
Author's picture

Miles

I’m a person who is enthusiastic about Coding, and that’s my job by the way.


Web Developer


Taiwan