这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记
第三次课
运行main.go之和终端输入
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/goroutine"
浏览器访问
http://127.0.0.1:6060/debug/pprof/
运行main.go之和终端输入
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/goroutine"
浏览器访问
http://localhost:8080/ui/
安装graphviz
需要重启电脑才生效,奇怪。
报错
GOROOT. For more details see: 'go help gopath' go.mod没有配置
module github.com/wolfogre/go-pprof-practice
go 1.18
有go.mod
设置里
- GO模块启用GO模块集成
- 删除GOPATH
没有go.mod
- 设置里面GO的配置,两个GOPATH,一个全局GOPATH,一个项目GOPATH。
- 全局GOPATH是环境变量里配置的。项目GOPATH是下载包的路径。
如果使用了gopath,就不用设置go mod,因为这两个都是用来管理项目,go mod是后来新版本的项目管理方式,很多旧资料上还是使用了go path,所以出现这个问题,只需要把GoLand->settings->project gopath里边的设置删除即可
查到的资料
beego的bee工具为什么强制新建项目在GOPATH/src目录下? GO 的包搜索是从 GOPATH 和 GOROOT 路径下搜索,源码必须要放在 GOROOT 或 GOPATH 的 src 目录下才能找到
报错
GOPATH共存,所以把项目从$GOPATH中移出
一堆操作完,连之前的项目打开全是报错
go mod tidy
更新依赖
GO项目报错还能运行
不勾选使用系统环境定义的GOPATH
版本控制里的目录映射
GitHub仓库和本地项目路径映射
go mod init
产生go.mod文件
go mod tidy的使用
- 引用项目需要的依赖增加到go.mod文件。
- 去掉go.mod文件中项目不需要的依赖。
测试路由
- 浏览器url输入不能测试POST请求!!!看清楚是get请求再测
login:1 GET http://127.0.0.1:8080/douyin/user/login 404 (Not Found)
- 修改完代码要马上重启服务
- 这是一个结构体(go里省略分号),Response(这也是结构体,里面有StatusCode,StatusMsg),一部分是自定义数据
type TestResponse struct { //Response(里面有StatusCode,StatusMsg)
Response
CommentList []Comment `json:"comment_list,omitempty"`
User User `json:"user"`
UserId int64 `json:"user_id,omitempty"`
Token string `json:"token"`
TestCode int8 `json:"test_code"`
}
- 在 Golang 的结构体定义中添加
omitempty关键字,来表示这条信息如果没有提供,在序列化成 json 的时候就不要包含其默认值。(问题:内嵌结构体依然会显示;初始值等于默认值会隐藏。解决方法:改成指针)
- 为了将代码中的结构体与 json 数据解耦,通常我们会在结构体的 field 类型后加上解释说明(
json:"test_code"),这样无论代码中的变量如何改变,我们都能成功将 json 数据解析出来。 - 连接MySQL Go中文文档
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
db, err := sqlx.Connect("mysql", "root:root@(localhost:3306)/mydb")
if err != nil {
fmt.Printf("connect DataBase failed, err:%v\n", err)
return
}
db.SetMaxOpenConns(20)
db.SetMaxIdleConns(10)
fmt.Printf("connect DataBase success\n")