Go问答技术文章
-
Go 的 http.Client.Do 返回 404 时 err 仍可能是 nil,因为非 2xx 状态属于服务器响应,不是传输错误。本文区分 err、StatusCode 和响应体读取错误,给出关闭 Body、限制错误正文并映射业务错误的写法。496 收藏 -
Go 的 encoding/json 默认会把 JSON 字符串中的小于号写成 \u003c,这通常是 HTML 安全转义而不是乱码。本文说明如何判断、何时使用 SetEscapeHTML(false),以及关闭后仍需遵守的 HTML 安全边界。474 收藏 -
Go 用 archive/zip 生成的 ZIP 无法打开时,先检查条目写入、zip.Writer.Close 和底层输出的关闭顺序,再用 zip.Reader 区分截断、写入失败与 CRC 校验问题。489 收藏 -
Go map 单值读取时,缺失键和实际零值看起来一样。本文用双值索引解释如何判断键是否存在,并覆盖 nil map、不同值类型、默认值与业务封装边界。298 收藏 -
Go 的 sync.Mutex 可以使用零值,但首次使用后不能再复制。本文说明按值传参、range、返回值为什么会复制锁,并给出指针接收者、快照类型和 go vet 检查方案。233 收藏 -
Go sync.Pool 里的对象会消失,是因为它只承诺临时对象复用,不承诺持久保存:池中元素可被运行时自动移除,Get 也可能直接把池当作空池。本文用 New、Get、Put 示例说明正确用法,并划清 sync.Pool 与业务缓存的边界。109 收藏 -
Go 的 bytes.Buffer.Bytes 返回的是共享底层存储的未读区域切片。本文区分 Read、Write、Reset、Truncate 带来的视图失效与真实覆盖,并给出安全复制方案。462 收藏 -
Go 的 Header.Get 返回空字符串时,先检查是否用 Header.Set 或 Header.Add 写入、是否把请求头和响应头对象混用了,以及是否直接向 map 写入了非规范化键。118 收藏 -
Go 使用 filepath.Ext 判断文件扩展名时,只会返回最终路径元素最后一个点开始的后缀。本文结合隐藏文件、多重后缀和大小写,给出可复用的判断规则。474 收藏 -
Go 使用 os.OpenFile 创建文件时,传入的 perm 不是最终权限。本文拆解 umask、文件是否已存在以及 Chmod 的关系,并给出一套可复用的排查与修正写法。486 收藏 -
Go 的 PathEscape 用于 URL 路径段,QueryEscape 用于查询参数值。两者对斜杠、加号和与号的处理不同,混用会导致路径层级变化或查询参数串位。本文用最小示例和 url.Values 说明选择方法。192 收藏 -
Golang · Go问答 | 3星期前 | go · 重定向 · Microsoft Visual Studio cnwizards(c++程序开发包) Go HTTP重定向 post http.Client
Go http.Client 遇到 301、302、303 时会把后续 POST 改为 GET;本文解释状态码差异、GetBody 和 CheckRedirect 的用法,帮助你避免请求体悄悄丢失。133 收藏 -
Go 的 database/sql 不会统一改写占位符,? 还是 $1 取决于数据库驱动和后端语法。本文用 MySQL 与 PostgreSQL 对照示例,说明参数值、表名列名和跨数据库适配的边界。149 收藏 -
Go 的 rows.Next 返回 false 不一定代表结果集正常读完,也可能是迭代期间发生了错误。本文用最小可用代码拆开 QueryContext、Scan、Err 和 Close 的判断边界,说明如何避免把超时、驱动错误误判为空结果。433 收藏 -
普通 []byte(s) 转换得到可写字节切片,修改它不会回写原 string;中文按字符修改应使用 []rune,结果再按需转回 string。307 收藏