G01學習筆記-2

zcold發表於2021-05-14

閱讀位置4.3

知識點

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,不推薦設定

疑問

  1. 重構的目的性
    //由
    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)
    NewServeMux 原始碼
    G01學習筆記-2
  • 貴在堅持,自我驅動,go 小白在成長
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章