Go语言技术文章
-
Lip Gloss 的左右文本面板要先分别 Render 成字符串,再用 JoinHorizontal 按顶部、居中或底部对齐;文章同时说明固定宽度、边框和终端总宽度预算。184 收藏 -
Go database/sql 可以通过 driver.Connector 把驱动连接配置交给 sql.OpenDB。本文说明 Connector、*sql.DB 和连接池的职责边界,并给出统一配置、多个独立连接池及关闭处理的写法。183 收藏 -
Go 读取 TLS 证书到期时间的关键是等待握手完成,再从 ConnectionState.PeerCertificates[0] 取得对端叶子证书,并读取 x509.Certificate.NotAfter。文章给出剩余时间计算、过期判断和客户端与服务端空证书边界的可复用写法。183 收藏 -
用 Go ldflags 把版本号、提交号和构建时间注入专用变量,讲清 -X 的路径写法、可复现构建边界、CI 参数和常见失效原因。182 收藏 -
Go 多模块开发时,可以用 go.work 将多个独立 go.mod 纳入同一工作区,让业务模块直接使用本地依赖模块。本文对比 go.work、replace 和正式版本依赖的边界,并给出拆分与发布建议。179 收藏 -
Go tcell 的 PollEvent 会阻塞等待终端事件,context.Done 或系统信号不会自动让它返回。本文用 EventInterrupt 和 PostEvent 把退出通知送入 tcell 事件流,再由事件循环统一收口,并说明 Fini、ChannelEvents 与重复退出处理的边界。178 收藏 -
Go 中格式化时间字符串适合展示,不适合作为通用的先后判断依据。本文用跨月份、时区和精度的例子说明字符串比较为什么会误判,并给出基于 time.Time、Before、After、Equal 与 Compare 的稳妥写法。177 收藏 -
Go 依赖升级后出现接口不兼容,先不要盲目回退。本文用 go.mod、go list -m、go mod graph 和编译错误把问题分成导入路径变化、公开 API 断裂与间接依赖切换三类,再给出回退、迁移和兼容适配的选择方法。176 收藏 -
Go build tags 与平台文件后缀在构建时选择源文件。本文通过互斥的 Linux、Windows 和通用实现,说明目标平台、包级排障命令、回退方式与跨平台交付边界。175 收藏 -
Go tcell 绘制中文、全角符号或 emoji 时,不能按 rune 数量固定让列坐标加一。本文从覆盖现象出发,说明 Put 返回的显示宽度、右边界判断和宽字符占两格的绘制方式。174 收藏 -
用 Go Goldmark 的 ast.Walk 遍历 Markdown AST,提取 Heading 层级和纯文本,生成可用于目录、侧栏和锚点的结构。174 收藏 -
用 goquery.Map 把一组 HTML 节点按原顺序转换成强类型 Go 结构体切片,并说明 Attr 缺失、空文本、校验和批量解析时的边界处理。173 收藏 -
Go 服务启动时报端口被占用时,从 net.Listen 的绑定地址入手,结合 macOS、Linux、Windows 命令定位 PID 和监听范围,区分旧实例、IPv4/IPv6 与通配地址冲突,并给出安全停止、改端口和复查方法。172 收藏 -
sync.Once 适合只允许成功初始化一次的场景,但初始化函数一旦返回或 panic,后续 Do 不会重试。本文用显式状态机实现并发等待、失败退避、context 取消与成功缓存,并给出方案选择边界。172 收藏 -
Go 的 os/user.Current 用于获取当前进程用户,首次调用后会缓存结果;os/user.Lookup 用于按用户名查询,并在找不到用户时返回 UnknownUserError。本文结合 cgo、osusergo 和跨平台字段差异说明怎样选择。171 收藏