Go语言技术文章
-
Golang · Go教程 | 4天前 | 网络编程 · 标准库 · go · Socket · SO_REUSEADDR Go net.ListenConfig Control RawConn socket选项
Go 的 net.ListenConfig 没有直接暴露所有 socket 选项时,可以使用 Control 回调在 socket 创建后、绑定前通过 RawConn 设置平台相关参数。本文以 Linux TCP 的 SO_REUSEADDR 为例,说明错误传递、tcp4/tcp6 和跨平台边界。387 收藏 -
Go io.Pipe 的读写端是同步边界;本文用 CloseWithError 把生产错误传给消费者,并区分 EOF、业务错误与提前关闭,避免 goroutine 泄漏。185 收藏 -
Go os/exec 通过 Cmd.Dir 设置子进程工作目录;本文同时说明如何读取输出、区分启动失败与非零退出,并处理跨平台路径边界。360 收藏 -
Go log/slog 的 Attr.Equal 可以按键和值判断两个结构化字段是否一致。本文用测试和 Handler 场景说明普通值、分组值、动态 LogValuer 与零值属性的比较边界。371 收藏 -
Go html/template 会按 URL 上下文处理 href,但业务协议允许列表仍应在数据层明确限制。本文用普通 string、http/https 白名单和根路径规则,说明如何拒绝危险协议并保留模板转义。199 收藏 -
Go regexp.Regexp.LiteralPrefix 返回所有匹配共享的字面前缀和完整标记。本文用固定文本、固定前缀与无共同前缀的表达式说明如何先筛选候选,再用 MatchString 完成最终判断。423 收藏 -
Go 的 crypto/x509 校验证书链时,Roots 是信任锚,Intermediates 只是补齐链路。本文从 PEM 解析开始,演示如何构造 CertPool、设置 VerifyOptions,并区分 DNS、用途和证书有效期等校验边界。486 收藏 -
Go crypto/tls 在启动时加载多份证书,用 GetCertificate 按 SNI 精确选择并拒绝未知名称。示例说明回调调用条件、只读映射、兼容性及证书信任和业务鉴权的区别。434 收藏 -
Go 中不存在可靠的独立端口预检查。用 net.ListenConfig.Listen 直接尝试绑定,成功才代表当前进程取得监听权;不需要固定端口时使用 :0 并从 Listener.Addr 读取系统分配的地址。160 收藏 -
用 Go slices.Chunk 按固定大小遍历任务批次,说明最后一批、空输入、非法批大小、共享底层数组与 slices.Clone 副本边界。413 收藏 -
maps.Clone 复制的是 map 的一层键值,不是递归深复制。本文用嵌套配置示例说明 slice、map、指针字段的共享边界,并给出按场景选择复制方案的方法。334 收藏 -
Go 泛型切片返回值要隔离外层修改,应分配独立数组并 copy。通过 PrefixCopy 示例区分共享视图、容量限制与浅拷贝,说明命名类型、nil、引用元素及迁移检查边界。143 收藏 -
Go 泛型约束可以同时写底层类型集合和接口方法。本文用一个可复用的约束示例说明类型集合、方法集、值接收者与指针接收者之间的边界。171 收藏 -
Go 泛型排序函数应使用 cmp.Ordered 表达可用的有序类型集合。本文从约束边界、命名类型、不可排序类型和浮点 NaN 语义入手,给出可复用写法与选型清单。499 收藏 -
通过 app 与 labelkit 原创示例说明 Go workspace 的 use、模块路径与工作区发现规则,并区分 replace、go work sync 和独立发布依赖,避免本地联调成功掩盖 go.mod 缺口。211 收藏