G01学习笔记-2
知识点
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 协议》,转载必须注明作者和本文链接
推荐文章: