golang

分类下相关文章

golang gin 实现 redirect 302 跳转

我的需求是,访问了一个 golang gin 的链接,然后自动 302 跳转到一个三方链接。主要是为了做出站链接统计。 实现方法 c.Redirect(302, "https://www.sunzhongwei.com") c.Abort() Abort 终止的意思。 ...

阅读全文...

GoAdmin 新增路由后报错:panic: handlers are already registered for path

参照 GoAdmin 文档中的提示,添加了一个新的 model 及路由,但是编译成功后,运行报错: [GIN-debug] GET /go/admin/assets/dist/fonts/fontawesome-webfont.eot --> github.com/GoAdminGroup/go-admin/adapter/gin.(*Gin).AddHandler.func1 (3 handlers) panic: handlers are already registered for path '/go/admin/assets/dist/fonts/fontawesome-w ...

阅读全文...

go-admin cli error: interface conversion: interface {} is nil, not string

在使用 GoAdmin 生成数据模型文件时报错: $ adm generate GoAdmin CLI v1.2.8 ? choose a driver mysql ? sql address 127.0.0.1 ? sql port 3306 ? sql username goadmin ? sql password ******** ? sql database name goadmin go-admin cli error: interface conversion: interface {} is nil, not string 解决方法 看了一下 GoAdmin adm 目录 ...

阅读全文...

golang 管理后台框架 gin-vue-admin 与 GOADMIN 对比

想尝试一下用 golang 写管理后台,如果开发效率可以接受的话,就逐步替换掉目前的 laravel backpack 后台。 下面的内容已经过时,不需要再看了。目前,我已经改用了 Golang gin 作为后台接口服务,前端使用 Ant Design Pro 作为前端(Ant Design 的颜值有保证,做企业应用后台管理,不用担心太丑陋的问题),做了前后端分离,灵活度非常高。具体参考 搭建 Golang Gin + Ant Design Pro V5 管理系统后台。 Ant Design Pro 的在线预览地址: https://preview.pro.ant.design/dashboa ...

阅读全文...

cannot find module providing package github.com/xxx: working directory is not part of a module

运行 goadmin 时,报错 $ go run main.go main.go:4:2: cannot find module providing package github.com/GoAdminGroup/go-admin/adapter/gin: working directory is not part of a module ... 解决方法 $ go mod init sunzhongwei.com/goadmin go: creating new go.mod: module sunzhongwei.com/goadmin 此时,目录下会新建 go.mod 文件,定义了各 ...

阅读全文...

go get 显示 golang 三方包下载进度

今天在下载一个 golang 三方包时,执行了很长时间,也没有执行完毕。 命令如下: go get github.com/GoAdminGroup/go-admin/adm 我不知道是网络断掉了,还是什么原因,因为默认 go get 是不显示进度的。 Reddit 上找了一个解决方法,非常有效,可以在不修改 golang 命令代码的情况下,直接查看下载进度: strace -f -e trace=network go get github.com/GoAdminGroup/go-admin/adm 2>&1 | pv -i 0.05 > /dev/null 进度显示: ...

阅读全文...

golang 自动化测试

为了提升开发效率,很多时候我只想在终端下敲代码,并执行自动化测试验证。相比,每改一点代码,就打开浏览器手动测试,要节省很多时间,也不容易临时起意去论坛闲逛了。。。 依赖包 import "testing" 测试代码规范 文件名格式:file_test.go 功能测试函数名格式:TestFuction 性能测试函数名格式:BenchmarkFunction,执行命令 go test -bench 时会运行 assert 库 https://github.com/stretchr/testify 内置的 Errorf 写法太啰嗦了,找了一个支持 assert 语法的库。我 ...

阅读全文...

go test 提示 no test files

由于我的 golang 测试代码写在子目录下,而项目根目录下没有任何测试代码文件。所以在执行测试时,提示 no test files。 go test -v ? sunzhongwei.com/go_tool [no test files] 解决方法一 > go test -v ./... ? sunzhongwei.com/go_tool [no test files] ? sunzhongwei.com/go_tool/controllers [no test files] ? sunzhongwei.com/go_tool/ ...

阅读全文...

go test 报错 exec: "gcc": executable file not found in $PATH

执行 golang 测试代码时,报错: > go test # runtime/cgo exec: "gcc": executable file not found in $PATH 开发环境,Windows 10 WSL - Ubuntu 解决方法 sudo apt update sudo apt-get install build-essential 再次执行 go test 就正常了。 ...

阅读全文...

Golang 短网址服务实现出站链接统计,及失效检测

头痛的问题 网站内大量的三方网站链接,经常会有失效的情况,需要自动判断是否已失效。例如阿里云大使链接和京东、淘宝链接就经常发生变更或者失效。 三方链接存在于多个网页/代码中,一旦变更,就需要多处更改。如果能统一管理就方便多了,一处修改,多处生效。 三方链接的点击情况统计。目前用的百度统计事件分析,无法满足上述需求。 所以,我决定写一套短链接服务,来解决这个问题。 功能需求 短链接生成 定时任务:自动遍历所有链接,判断是否已失效 关键词检测:设置关键词,用于判断网页内是否包含此关键词,以判断是否失效 转化排行榜:转化效果评估 链接形式 知乎的做法是新的二级域: <a href=&q ...

阅读全文...

golang 引用嵌套 template 时传递模板变量

golang gin controller 给模板传入变量 kv c.HTML(http.StatusOK, "index.html", gin.H{ "kv": kv, }) template index.html 引用嵌套模板 footer.html,同时将变量通过点 (.) 传递给 footer.html {{ template "footer.html" . }} template footer.html <span>累计打开次数:{{ .kv.Value }}</span> ...

阅读全文...

Golang Gin, Kotlin SpringBoot, PHP Laravel 对比,及该如何选择

不同业务场景使用不同的方案。 PHP Laravel 优点: 开发效率没得说,确实快。有想法时,可以瞬间实现。我依然觉得,如果是作为个人 side project,作为试错,用 Laravel 开发确实是首选。 PHP 作为最好的语言,各种三方服务都会提供 SDK,或者参考,开发者社区环境很好。 Laravel 的更新频繁,新功能确实贴心。 缺点: CPU 损耗非常高。高到离谱,导致 Laravel 能处理的请求并发数极其有限。虽然网页可以通过静态缓存的方式解决,但是对于接口类的开发非常不合适。甚至所有给客户开发的非网站项目都不适合使用。 当 Laravel 的服务需要部署在客户服务器上 ...

阅读全文...

Golang 1.13 升级版本到 1.14

今天看到 golang 新版本 1.14 发布了,于是想升级一下,练练手。毕竟之前没有尝试过 golang 版本升级。 如何升级 看了一下 Golang 的官方文档,Golang 升级步骤很简单 删除旧版本 安装新版本 如何删除 Golang 旧版本 首先确认当前的 Golang 版本 $ go version go version go1.13 linux/amd64 开始删除 $ sudo rm -rf /usr/local/go 好了,卸载 golang 就是这么简单。(我本机删除等待了半分钟) 实际上,/usr/local/go 下包含了所有的 golang tools。 $ ...

阅读全文...

Golang Gin 判断网页请求是否来自移动端

由于我想对 PC 端和移动端展示不同的广告,需要判断网页请求是否来自移动端。 Golang Gin 中并没有找到内置的实现,我决定参考 wordpress PHP 代码中的实现,用 golang 实现一下。 参考:wordpress 判断是否为移动端浏览器的实现 对应的 Golang 实现 func IsMobile(userAgent string) bool { if len(userAgent) == 0 { return false } isMobile := false mobileKeywords := []string{"Mobile", &qu ...

阅读全文...

Golang Gin 获取 HTTP 请求头中的 User Agent 值

Golang Gin Web 框架中有两种获取 HTTP 请求头中的 User Agent 值的方法: 方法一 func Index(c *gin.Context) { ua := c.GetHeader("User-Agent") // do something ... } 方法二 ua2 := c.Request.Header.Get("User-Agent") 结果示例 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko ...

阅读全文...