Go语言技术文章
-
Go html/template 把 href 中的 URL 改成 & 或 #ZgotmplZ,并不一定是链接坏了。本文用一个最小页面拆开 HTML 实体、URL 过滤、协议判断和受信 URL 类型的边界。172 收藏 -
Go filepath.Rel 遇到绝对路径和相对路径混用时,先用 filepath.Abs 统一计算基准,再处理跨根目录、../ 越界、符号链接和 URL 路径等边界。288 收藏 -
Go httputil.ReverseProxy 的 SetURL 会让出站 Host 默认跟随目标主机。本文用 Rewrite 先修改目标 URL,再保留入站 Host,并说明 X-Forwarded-Host、路径拼接与安全边界。401 收藏 -
用 Go filepath.WalkDir 遍历目录时,SkipDir 只跳过当前目录,SkipAll 才能停止剩余遍历。本文通过查找文件示例说明错误处理、提前停止和未找到结果的区别。126 收藏 -
Go 的 http.Cookie 设置 SameSite 后,浏览器是否发送还要看站点关系、请求凭据、Secure 和 Path。本文按请求链路定位 Cookie 不见的原因。144 收藏 -
Go 的 string 不保证天然是合法 UTF-8。用 unicode/utf8.ValidString 在入库前做字节级拦截,再叠加长度、格式和数据库字符集检查,才能避免坏编码混入数据层。272 收藏 -
Go 的 http.Header 用小写字符串调用 Get 也可能成功,因为 Get 会把查询键规范化;但直接用小写键构造 map 时,直接索引与 Get 查找的键并不相同。本文用对比示例拆清这条兼容边界。275 收藏 -
用 Go utf8.DecodeRune 扫描原始字节时,RuneError 只有配合 size==1 才能判断非法编码,并通过字节游标准确定位原始偏移。177 收藏 -
Go 的 tls.ClientSessionCache 命中率低,不一定是 LRU 容量太小。先确认真的建立了新 TLS 连接,再检查缓存键、会话票据、证书和协议兼容条件,最后用 ConnectionState.DidResume 验证。428 收藏 -
Go 的 utf8.DecodeLastRuneInString 处理空字符串时返回 RuneError 和 size=0。本文用返回值对照、UTF-8 多字节裁剪示例,区分空输入、合法 U+FFFD 与非法尾字节。463 收藏 -
Go TLS 客户端遇到证书错误时,直接设置 InsecureSkipVerify=true 只会关闭证书链和主机名校验。本文按错误分支拆开 ServerName、RootCAs 与 VerifyConnection,给出保留安全校验的排查和配置方式。323 收藏 -
regexp.QuoteMeta 只能构造正则字面量,不能替你修正 Go 字符串字面量。处理 Windows 路径时要分清源码、运行时字符串和 RE2 模式三个边界。316 收藏 -
Go 的 tls.Config.ServerName 为空时,默认安全校验无法确定要匹配的主机名,握手会在证书校验前失败。本文拆开 SNI、拨号地址、SAN 和 RootCAs,给出直连 IP 与自定义拨号的正确配置。299 收藏 -
讲清 Go regexp.ReplaceAllStringFunc 的回调输入边界,演示如何隔离计数和去重状态,并处理并发调用、捕获组与 API 选择,避免结果串线和数据竞争。370 收藏 -
解释 Go TCPConn.CloseWrite 为什么只关闭本地发送方向,拆解已写入数据、FIN、服务端读取与 io.EOF 的关系,并给出发送完请求后继续读取响应的示例。210 收藏