Go语言技术文章
-
multipart.FileHeader.Size 是文件部件的大小元数据,读取长度还会受到当前游标、读取上限和错误处理影响。本文用 Go 示例拆开这几个数字的含义,并给出上传场景的排查与限制方式。320 收藏 -
Go database/sql 通过 Rows.ColumnTypes 读取查询结果的列名、数据库类型、长度、精度、可空性和建议扫描类型,并说明驱动不支持与 SQL NULL 的处理边界。319 收藏 -
Go text/template 的自定义函数要先放进 template.FuncMap,再通过 Funcs 绑定并 Parse 模板。本文说明注册时机、函数签名、管道调用、错误处理,以及解析后替换同名函数的边界。319 收藏 -
Go encoding/gob 解码到已有结构体时不会先清空目标,流中缺少的字段和发送端被省略的零值字段可能继续保留旧内容。本文用最小示例说明字段合并语义,并比较复用目标、解码到新变量和存在性字段三种处理方式。319 收藏 -
用 database/sql 的 ColumnTypes 处理动态查询列:字段白名单负责安全,参数绑定负责值,ColumnTypes 负责结果元数据与稳定组装。319 收藏 -
从 G、M、P 的阻塞表现出发,把 Go 长时间 CPU 计算拆成可恢复批次,用 context、有界 worker 池和 execution trace 控制延迟、取消与并行度。319 收藏 -
Go sort.Interface 稳定排序应使用 sort.Stable,切片可用 SliceStable;通过整数优先级案例说明严格比较、重复键等价关系、原始次序与自测方法。319 收藏 -
Go errors.As 可以沿着 %w 形成的错误链查找目标类型,并把匹配到的错误写入目标变量。本文说明多层包装、指针目标、首次匹配和自定义 As 方法的正确用法。319 收藏 -
Go 普通 map 并发读写会触发数据竞争,严重时出现 fatal error。本文按访问边界说明原因,并比较 mutex、RWMutex、单协程所有权与 sync.Map 的适用场景。319 收藏 -
Go 的 crypto/ecdsa Sign 不会把摘要长度简单地强制要求为曲线阶长度;摘要过长时会按曲线阶位数截断。本文用一个小型签名器说明如何显式检查、调用 Sign 并配套验证。319 收藏 -
Go humanize 的 BigComma 可以把 math/big.Int 转成带千位分隔符的十进制文本。本文从超出 int64 的字符串解析开始,说明正负数、零值、解析错误和 BigCommaf 的适用边界。319 收藏 -
Go 的 os.MkdirAll 创建目录失败时,问题通常不在 0750 或 0777 本身,而在父目录搜索/写入权限、运行身份、只读挂载或 umask。本文按 PathError 定位受限环节,并给出更稳妥的修复顺序。319 收藏 -
Go 1.27 会识别已经移除的 GODEBUG 设置,但只接受移除前的最终默认值。文章比较 go.mod 与源码配置位置,并用 asynctimerchan 说明保留和报错边界。318 收藏 -
用 httptest.NewTLSServer 创建带测试证书的 HTTPS 服务,再使用 server.Client 发起请求,完成 Go 接口单元测试并避开本地证书校验误区。318 收藏 -
Go 的 regexp.Compile 失败时,先区分正则语法错误与匹配不到,再用 regexp/syntax.Error 读取错误类型和问题表达式,最后处理动态规则与 MustCompile 的边界。318 收藏