Go 程式設計 - 初階

認識 Go 的 error 與學習判斷 error 類型的方法

Go 的程式設計中,透過回傳 error 型別的值告知錯誤發生是相當常見的模式,所以很多函式的回傳定義大多如下所示,其中 1 個會是 error 型別,用以告知執行時的錯誤:

func FunctionName() (結果的型別, error)

這也是為什麼我們如果閱讀各種以 Go 開發的開放原始碼專案會很常看到類似以下的程式碼的原因:

r, err := FunctionName()
if err != nil {
	// Error handling here
}

所以學會判斷 error 的類型並處理各種類型的錯誤,變成 Go 程式設計的重要課題。

本文將探討如何判斷 error 類型以及多種不同判斷的方法。

Posted on  Apr 16, 2024  in  Go 程式設計 - 初階  by  Amo Chen  ‐ 6 min read

從 Python try except 的角度理解 Go 如何用 defer panic() recover() 處理例外/錯誤

學習 Go 的過程一定有人跟我一樣,對於 Go 用 defer(), panic(), recover() 處理例外/錯誤的方式感到困惑,特別是已經習慣使用 Java, JavaScript, Python 等程式語言的開發者來說, Java, JavaScript, Python 所提供的 try...catch , try-except 在可讀性相對友善很多之外,在開發時也直覺很多。

但要理解 Go 的 defer(), panic(), recover() 其實可以從已知的模式出發,如此原本無法輕易理解的事物,就會變成好理解許多。

本文將從 Python 的 try-except 出發,學習 Go 如何做到相同的例外(exception)處理。

Posted on  Mar 27, 2024  in  Go 程式設計 - 初階  by  Amo Chen  ‐ 5 min read

從一知半解到略懂 Go modules

一直以來沒有好好去詳讀 go modules 的文件,所以都覺得對 go modules 只是一知半解。這次花了些時間看了關於 go modules 的相關文件,並實際寫個小範例體驗,最後整理成本文分享。

Posted on  Nov 2, 2020  in  Go 程式設計 - 初階  by  Amo Chen  ‐ 3 min read

Golang - 從 Hello World 認識 GOPATH

初學 golang 的人應該都會對環境變數 GOPATH 感到困惑。

譬如 PYTHONPATH 是 Python 尋找模組與套件的路徑,一般來說並不需要特別設定,也可以用得很開心。

然而 GOPATH 則不一樣,一旦程式涉及 package 就會需要留心 GOPATH 的設定,很容易令人感到困惑,但是只要弄清楚 GOPATH 的基本,就能夠很輕鬆地開發 Go 應用程式。

那麼,就從 Hello World 開始認識 GOPATH 吧!

Posted on  Jul 26, 2020  in  Go 程式設計 - 初階  by  Amo Chen  ‐ 4 min read

Golang VSCode 開發環境建置 - 手把手教學

VS Code 作為 Go 的 IDE 其實相當方便,但由於初學者多半對 GOPATH 或 launch.json 的設定仍處於半生不熟的情況,對於環境設定都會感到棘手,因此本文特別將過程陳列出來,以期大家都能夠開啟一段愉快的 Go 旅程。

Last updated on  Mar 2, 2023  in  Go 程式設計 - 初階  by  Amo Chen  ‐ 4 min read

Golang HTTP FileServer 簡介

Golang 內建提供 http.FileServer ,可以方便地透過 HTTP 存取檔案系統(file system),例如以下程式碼執行之後,就可以透過瀏覽器打開網址 http://localhost:8080 瀏覽 /usr/share/doc 資料夾內的檔案。

package main

import (
	"net/http"
)

func main() {
	http.ListenAndServe(":8080", http.FileServer(http.Dir("/usr/share/doc")))
}

Posted on  Jun 4, 2018  in  Go 程式設計 - 初階  by  Amo Chen  ‐ 2 min read