golang

分类下相关文章

golang gin 获取请求中的查询参数,并设置默认值

例如,我想给头条小程序提供一个接口,用来查询图书列表,并设置返回数量限制,在 golang gin 中可以使用 c.DefaultQuery("limit", "20") 设置默认值 c.Query("limit") 不设置默认值 func GetBooks(c *gin.Context) { limit := c.DefaultQuery("limit", "20") ... } 默认值必须为字符串 如果使用 c.DefaultQuery("limit&quot ...

阅读全文...

golang 定时任务

需求 我将一部分事件日志存储到了 MySQL 上,只有最近几天的有参考价值,所以需要每天定时删除早期的日志,以节省存储空间。 技术选型 自从用了 Laravel 的定时任务之后,我就再也不喜欢用 Linux 系统自带的 crontab 了,因为部署时还需要手动配置。 项目多了之后,就容易忘记。不如在 web 服务框架中直接写,不容易遗忘。 golang 的计划任务三方库 https://godoc.org/github.com/robfig/cron 是否需要配置 crontab golang 的这个实现,跟 laravel 的不太一样,不需要再配置一次 crontab。 实际上是开了个 go ...

阅读全文...

GoAdmin Theme does not implement

升级了 GoAdmin 版本,但是 go build 编译时报错: > go build # github.com/GoAdminGroup/themes/adminlte ../../../golang/pkg/mod/github.com/!go!admin!group/themes@v0.0.30/adminlte/adminlte.go:43:32: cannot use &Adminlte (type *Theme) as type "github.com/GoAdminGroup/go-admin/template".Template in arg ...

阅读全文...

升级 go install 已安装的三方工具版本

今天在使用 GoAdmin 的 adm generate 命令时,发现新版本提示: GoAdmin CLI v1.2.9, the latest version is v1.2.13 now. 这个 adm 命令行工具是通过 go install 安装的。 我尝试再次执行: > go install github.com/GoAdminGroup/go-admin/adm 但是安装之后,发现依旧是老版本。 于是,又尝试在 github 地址后面添加 latest,报错: > go install github.com/GoAdminGroup/go-admin/adm@lat ...

阅读全文...

golang defer 的意义

defer 的使用场景 需要打开,并手动关闭的场合。例如: open, close 文件 connect, disconnect 网络连接 lock, unlock 数据库事务 defer 触发的时机 在当前函数 return 的时候被触发。 defer 的意义 防止写完冗长的处理逻辑之后,忘记关闭操作。 相对 python 的 with block。既不用缩进,也清晰直观 ...

阅读全文...

golang 本地调试第三方库的代码

正在用的 golang 三方库 GoAdmin,发现有个时间区间组件的 bug。 时间组件无法切换 中文 locale 过滤功能无效。目前猜测是 locale 问题导致的日期格式问题 想自己调试一下看看能否解决。 但是如何调试呢? 首先,我是想直接修改 GOPATH/src 下的代码,然后重新编译。但是发现 > ls $GOPATH/src/github.com/GoAdminGroup/ 是空的。。。 解决方法 使用 go mod 替换源的方式: go mod edit -replace github.com/GoAdminGroup/go-admin=/home/zhongwe ...

阅读全文...

golang colly 爬取网站所有页面的标题

由于接手了一个年久失修的网站,其网页的标题,keyword,description 异常混乱,很多页面的标题都是相同的,或者非常长,填充了大量冗余的关键词。 网站的板块,独立页非常多,完全靠检查代码,或者检查页面,很难找全所有有问题的页面。 为了快速找出有问题的页面,我决定用 golang colly 写个爬虫,自动检测全站的标题等 SEO 设置。 hello world, colly 以豆瓣网站为例: package main import ( "fmt" "github.com/gocolly/colly" "github.com/ ...

阅读全文...

go install 的妙用

我之前一直对 go install 干了些什么不太了解。甚至分不清 go get 与 go install 的区别。 最近 golang 代码写的多了,接触的三方库多了,发现 go install 确实非常方便。 例如,GoAdmin 可以通过 go install github.com/GoAdminGroup/go-admin/adm 来安装一个 adm 工具,之后就可以通过 adm 命令来自动生成一些数据表相关的代码。类似 php artisan。 除了安装一些三方工具,我发现还可以来安装一些自己用 golang 写的小工具。 全局安装自己写的工具 例如,我写了一个导入日志的小工具 i ...

阅读全文...

golang 读取命令行参数

例如,我想用 golang 读取命令行传入的文件名,可以直接使用 os.Args。 package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args) if len(os.Args) != 2 { fmt.Println("请输入文件名") return } fmt.Println(os.Args[1]) } 运行测试 > ./test baidu-realtime.csv [./test baidu-realtime.csv] ...

阅读全文...

如何组织 Golang 项目目录,使一个项目包含多个 main 入口程序

真实需求场景 例如,我在写一个分析百度统计实时访客历史记录的系统,其包含的基本模块: 一个 GoAdmin 写的 Web 管理后台服务 一个 CSV 数据文件导入 MySQL 的命令 测试项目根目录下是否可以共存两个 main 入口程序 先不管网上的那些 golang 代码组织策略,单纯的测试一下是否可以在项目根目录下共存两个 main 入口程序。 测试方法: 既有的 import_log.go 中已经有一个 main 函数了 新建一个 main.go 文件,与 import_log.go 同属 package main,包含一个简单的 main 函数,输出 Hello world 运 ...

阅读全文...

golang sql 插入时报错 Error 1292: Incorrect datetime value: '' for column at row 1

在解析百度统计实时访客 csv 文件时,会遇到上次访问时间为空的情况。 pre_access_at := "" if strings.HasPrefix(record[13], "2") { pre_access_at = record[13] } 这样在执行 SQL insert 操作时,会报错: Error 1292: Incorrect datetime value: '' for column 'pre_access_at' at row 1 而 golang 中 string 类型并不能被赋值为 nil。 即便使用 time.Ti ...

阅读全文...

golang 判断字符串是否以特定字符串为结尾

可以使用 golang 内置的 strings.HasSuffix 参数: 第一个参数是原字符串 第二个参数是结尾字符串 package main import ( "fmt" "strings" ) func main() { b := strings.HasSuffix("103s", "s") fmt.Println(b) // true b2 := strings.HasSuffix("103s", "golang") fmt.Pri ...

阅读全文...

golang 读取并解析 csv 文件

从百度统计后台导出并下载了实时访客的 CSV 文件。想本地解析一下,并导入到 MySQL 中做备份,因为百度统计只能保留两个周的历史数据,且上限为5000条。 golang 解析 csv 代码 这里用到了 golang 内置的 "encoding/csv" 库,能自动读取一行 csv 数据,并返回 slice 类型的数据。 package main import ( "encoding/csv" "fmt" iconv "github.com/djimenez/iconv-go" "io&quo ...

阅读全文...

GoAdmin 兼容低版本的 MySQL,Unknown character set: 'utf8mb4'

有一个历史悠久的服务,使用的是 MySQL 5.0 版本。我想用 GoAdmin 重写管理后台,但是 MySQL 又不敢停机升级。发布之后,运行报错: panic: Error 1115: Unknown character set: 'utf8mb4' goroutine 1 [running]: github.com/GoAdminGroup/go-admin/modules/db.(*Mysql).InitDB.func1() /home/zhongwei/golang/pkg/mod/github.com/!go!admin!group/go-admin@v1.2.9 ...

阅读全文...

数据表非 id 主键时,GoAdmin 报错 Error 1054: Unknown column 'category.id' in 'field list'

使用 GoAdmin 管理新建的分类表 category 的 CRUD 时,报错: Error 1054: Unknown column 'category.id' in 'field list' 而 category 的主键,没有使用默认的 id,而是自定义了一个名 c_id. 解决方法 替换生成的代码中的 categoryTable := table.NewDefaultTable(table.DefaultConfigWithDriver("mysql")) 为 categoryTable := table.NewDefaultTable(table.Confi ...

阅读全文...

近期节日

2020年10月23日 霜降
2020年10月24日 联合国日
2020年10月25日 重阳节
2020年10月31日 世界勤俭日
2020年11月01日 万圣节
2020年11月07日 立冬
2020年11月08日 中国记者日
2020年11月10日 世界青年节
2020年11月11日 光棍节
2020年11月14日 世界糖尿病日
2020年11月17日 国际大学生节
2020年11月20日 国际儿童日
查看更多节日