Go-echo-demo
Go 语言 学习 demo
go 语言入门
推荐这个 https://tour.golang.org/welcome/2 还没看完 嘿嘿
Go 语言在线练习场,讲解很细
web 框架
简单看了一些基础我就来搞这个了,这个项目也是一个 web 实践
echo 官方文档 注意首页有几个很有用的简单实例,但是你按照文档目录是无法返回这一页的 😂 当时找了好久找不到
这个项目就是 据说超快
江湖人称:用过都说好,据说开发是可以自动重启 不用手动运行项目 想试试,但是我懒 和上边那个一样快,又一个扩展项目 好像叫 green 可以自动生成文档,不过很久没更新了,有兴趣了解一下这个怎么实现的
大型项目支持
数据库支持
gorm 中文文档 我看的这个 因为搜索引擎先找到了这个 后来才发现其实不是官方的 这里>>
gorm 官方文档
"gorm.io/gorm"
_ "github.com/go-sql-driver/mysql"
db, err := gorm.Open("mysql", config.DataBase)
if err != nil {
panic(err)
}
db.LogMode(true)
defer db.Close()
📃 关于这个项目
.
├── Dockerfile
├── README.md
├── build.linux.sh
├── build.sh
├── build.win.sh
├── config
│ └── config.go
├── dist
│ └── main-linux
├── go.mod
├── go.sum
├── h5
│ ├── api.js
│ ├── index.html
│ ├── main.css
│ └── main.js
├── main.go
├── modal
│ └── user.go
├── router
│ ├── admin
│ └── router.go
>>>>>> 例子 >>>>>>>>>
admin.Init(e, baseURL)
e.GET(baseURL, func(c echo.Context) error {
return c.String(http.StatusOK, "hello world!")
})
>>>>>>>>>>>>>>>
├── static
├── template
│ └── error.html
└── util
├── db.go
├── return.go
├── template.go
├── time.go
└── util.go
🦊 杂项 遇到的一些小问题
时间戳格式化
var timeLayout string = "2006年01月02日 15:04:05"
t := time.Now()
t.Format(timeLayout)
数据库存取时间类型
gorm 时间类型自定义解析格式
type LocalTime struct {
time.Time
}
var timeLayout string = "2006年01月02日 15:04:05"
func (t LocalTime) MarshalJSON() ([]byte, error) {
if y := t.Year(); y < 0 || y >= 10000 {
return nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]")
}
b := make([]byte, 0, len(timeLayout)+2)
b = append(b, '"')
b = t.AppendFormat(b, timeLayout)
b = append(b, '"')
return b, nil
}
func (t LocalTime) Value() (driver.Value, error) {
var zeroTime time.Time
if t.Time.UnixNano() == zeroTime.UnixNano() {
return nil, nil
}
return t.Time, nil
}
func (t *LocalTime) Scan(v interface{}) error {
value, ok := v.(time.Time)
if ok {
*t = LocalTime{Time: value}
return nil
}
return fmt.Errorf("can not convert %v to timestamp", v)
}
存取时间的时候相差 8 小时
DataBase string = "root:2568597007suke@(localhost:3306)/test?charset=utf8mb4&parseTime=true&loc=Asia%2fShanghai"
查询数据时 隐藏某些隐私字段
gorm:"-" 在保存数据的时候会忽略 查询是同样显示
!gorm 更新 或者 添加删除字段后 查询影响的数据行数一直为 0,因此无法知道是否更新成功 或者 保存数据成功
在操作之后重新赋值 db 以获取新的位置 而不是直接使用 db.RowsAffected
row := db.Model(&User{ID: id}).Updates(data)
row.RowsAffected
go get 安装完包之后不能使用命令后直接执行
path 设置错误
export GO111MODULE=on
export GOPROXY=https://goproxy.cn;
export GOROOT=/usr/local/go
export GOPATH=~/gowork
export PATH=$GOPATH/bin:$GOPATH:$PATH
web 开发时自动重启项目
https://github.com/gravityblast/fresh
看起来像是检查 ctrl s 的时候重新编译文件并执行,文件没有修改的时候也会触发重启
⚠️ 暂未解决的问题
环境设置
export GO111MODULE=on GOPROXY=https://goproxy.cn;
export GOROOT=/usr/local/go
export GOPATH=~/gowork
export PATH=$GOPATH/bin:$GOPATH:$PATH