Go 如何正确的构造 url 参数避免参数乱码
多人以为乱码是“编码格式不统一”,其实URL参数乱码的核心原因更简单:URL 的查询参数部分只支持ASCII字符集,中文、空格、特殊符号(如!@#)等非 ASCII 字符直接传入会被解析器误判。
多人以为乱码是“编码格式不统一”,其实URL参数乱码的核心原因更简单:URL 的查询参数部分只支持ASCII字符集,中文、空格、特殊符号(如!@#)等非 ASCII 字符直接传入会被解析器误判。
相信不少GO 开发者都遇到过这种糟心的情况:明明在代码里引入了第三方包,IDE 也没提示语法错误,可一执行 go build 构建就抛出 undefined: 包名/函数名 的错误。
这种问题看似诡异,实则大多和包的导入、安装、依赖配置有关。今天就把我遇到的问题和解决方案进行整理分享,希望对大家有所帮助。
用Golang 做金额计算或高精度数值运算时,很多开发者都会踩过 float 浮点数的“坑”。
比如执行 0.1 + 0.2,得到的结果不是预期的 0.3,而是 0.30000000000000004。
这种运算失真在支付、财务等场景中可能引发严重问题,今天就聊聊失真的根源,以及用第三方 decimal 包解决问题的完整方案。
写代码时,不少同学常用 else if 处理多条件判断,毕竟上手简单。
但随着业务逻辑迭代,当 else if 串越来越长,你会发现代码变得臃肿难维护,调试时找个条件都要翻半天。
在使用 GO 语言的 GORM 框架进行数据库开发时,我们经常会遇到需要判断当前构建的 DB 对象是否已经添加了 WHERE 条件的场景。
比如在封装通用查询函数时,要避免重复添加默认条件,或者根据是否有自定义条件来决定是否执行某些逻辑。
对方接口返回的 HTTP Body 用 GZIP 做了压缩,go 直接用 ioutil.ReadAll 读取后转 JSON,就会一直报 “invalid character ‘�’ looking for beginning of value”。