知識點
1. 標準庫路由 http.ServeMux 的用法
解析採用的是 長度優先匹配 規則
2. 路由包 gorilla/mux 的使用
解析採用的是 精準匹配 規則
//基本用法
router := mux.NewRouter()
//路徑+路徑引數+請求方式+別名
router.HandleFunc("/articles/{id:[0-9]+}",articlesShowHandler).Methods("GET").Name("articles.show")
// 自定義 404 頁面
router.NotFoundHandler = http.HandlerFunc(notFoundHandler)
3. go mod
3.1 歷史
Go 1.11之前 Go 原始碼必須放置於 $GOPATH/src 下
Go 1.11 推出的模組(Modules)
Go 版本 1.14 開始,官方鼓勵所有使用者遷移到 Go Modules 以進行依賴項管理
3.2 命令
命令 | 作用 |
---|---|
go mod init | 生成 go.mod 檔案 |
go mod download | 下載 go.mod 檔案中指明的所有依賴 |
go mod tidy | 整理現有的依賴,把未使用的 module 移除掉 |
go mod graph | 檢視現有的依賴結構 |
go mod edit | 編輯 go.mod 檔案 |
go mod vendor | 匯出專案所有的依賴到 vendor 目錄 |
go mod verify | 校驗一個模組是否被篡改過 |
go mod why | 檢視為什麼需要依賴某模組 |
go clean -modcache | 清空 Go Modules 快取 |
4. go env
go env
檢視環境配置
4.1 GOPROXY
go env -w GOPROXY=https://goproxy.cn
設定GOPROXY,並寫入env檔案
可選源
- 阿里雲
https://mirrors.aliyun.com/goproxy/
- nexus社群提供的
https://gonexus.dev
- goproxy.io的
https://goproxy.io/
- 官方提供的(jfrog,golang)
https://gocenter.io
https://proxy.golang.org
- 七牛雲贊助支援的
https://goproxy.cn
direct 標誌
例:https://goproxy.cn,direct
則告訴 go get 在獲取原始碼包時先嚐試 https://goproxy.cn,如果遇到 404 等錯誤時,再嘗試從源地址抓取
4.2 GO111MODULE
auto
:專案包含了 go.mod 檔案的話啟用 Go modules,目前在 Go1.11 至 Go1.15 中仍然是預設值on
:啟用 Go modules,推薦設定,將會是未來版本中的預設值off
:禁用 Go modules,不推薦設定
疑問
- 重構的目的性
NewServeMux 原始碼//由 http.HandleFunc("/", defaultHandler) http.HandleFunc("/about", aboutHandler) http.ListenAndServe(":3000", nil) //改成 router := http.NewServeMux() router.HandleFunc("/", defaultHandler) router.HandleFunc("/about", aboutHandler) http.ListenAndServe(":3000", router)
- 貴在堅持,自我驅動,go 小白在成長
本作品採用《CC 協議》,轉載必須註明作者和本文連結