G01学习笔记-2

阅读位置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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!