golang

分类下相关文章

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 ...

阅读全文...

Golang float 与 string,int 类型的相互转换,及如何保留小数位

今天在用 Golang 实现涨幅计算器的时候,第一次接触 Golang 的 float 类型。 这里记录一些 float 类型的基本转换操作。 string 转换为 float package main import ( "fmt" "strconv" ) func main() { input := "3.14" f_input, _ := strconv.ParseFloat(input, 64) fmt.Printf("%f - %T", f_input, f_input) } 执行结果 &g ...

阅读全文...

Golang 在数据库 QueryRow 查询不到数据时,自动插入一条

使用 Golang databae/sql 这个库进行 MySQL 查询时,QueryRow 如果查询不到数据,会报错: sql: no rows in result set go/models/kv.go:18 (0x9f49b5) 对应的代码 err := db.QueryRow("SELECT id, `key`, value FROM kv where `key` = ?", key).Scan(&kv.Id, &kv.Key, &kv.Value) if err != nil { panic(err.Error()) // 第18行 ...

阅读全文...

golang 函数定义

go 函数定义 func add(x int, y int) int { return x + y } 参数的类型在变量名后面 返回类型也在后面 如果多个参数的类型一致,可以省略前面的类型。 例如,上面的函数可以简写为 func add(x, y int) int { return x + y } 返回多个值的函数 func swap(x, y string) (string, string) { return y, x } 对返回值进行命名 func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x retu ...

阅读全文...

Golang Gin 给模板传递 struct 类型的数据

Golang 普通的基础类型变量可以这样传递: {{ .title }} Golang struct 类型: {{ .article.Title }} 注意,struct 的 field 名,通常要首字母大写。 ...

阅读全文...

Golang 使用 blackfriday 将 Markdown 转换为 HTML

在用 golang gin 写一个人民币大写转换的工具,网页中的描述信息是在网站后台以 markdown 形式编辑保存的,在前端展示时需要将 markdown 转换为 html。 在网上找了一圈,就发现一个库用的人比较多,那就是 blackfriday。 Golang blackfriday 的项目地址 https://github.com/russross/blackfriday 列表的渲染有问题 用的过程中发现一个问题,列表渲染时,会将下一行的文字,缀到一行。查了半天没找到原因。 突然在文档里找到一个说明: Hard line breaks. With this extension en ...

阅读全文...

Golang 单引号与双引号的区别

先来看一个报错的 Golang 代码片段: kv, _ := models.GetValue("2") c.HTML(http.StatusOK, "chinese_money_index.html", gin.H{ 'kv' : kv }) 编译时,第三行报错,报错信息如下: invalid character literal (more than one character) 看了一下 Golang 教程才发现: 双引号代表字符串,而字符串由字符组成。 单引号代表字符,严格来说是一个字符。 所以,Golang 中单引号跟双引号不能混 ...

阅读全文...

近期节日

2020年04月07日 世界卫生日
2020年04月11日 世界帕金森病日
2020年04月19日 谷雨
2020年04月21日 复活节
2020年04月22日 世界地球日
2020年04月23日 世界读书日
2020年04月26日 知识产权日
2020年04月30日 佛诞
2020年04月30日 全国交通安全反思日
2020年05月01日 国际劳动节
2020年05月04日 五四青年节
2020年05月05日 立夏
查看更多节日