Go语言技术文章
-
Go container/list 删除异常通常不是链表坏了,而是把 Value 当成 Element、节点来自另一条 List,或遍历时没有先保存 Next。本文按这三类现象给出排查和回归清单。493 收藏 -
deferclose 不是 Go 内置函数,通常指用 defer 安排 Close。本文解释 defer 的后进先出顺序、循环里的作用域,以及文件和 sql.Rows 的关闭错误如何处理。493 收藏 -
Go 控制 multipart 请求体积不能只调大或调小 maxMemory。本文用 MaxBytesReader 限制总 body,用 ParseMultipartForm 管理解析内存,再用 MultipartReader 和 LimitReader 控制单个 part,补上数量、临时文件和错误处理边界。493 收藏 -
Go 的 O_APPEND 负责把写入定位到文件末尾,O_TRUNC 则在打开可写文件时清空已有内容。本文用一个小工具拆解两者组合,给出覆盖写、追加写和安全新建的选择方法。493 收藏 -
Go 的 archive/zip 不把操作系统路径直接当作 ZIP 路径使用。本文从相对路径、正斜杠、目录尾斜杠和 Writer.Close 四个边界出发,写一个可复用的 ZIP 构建示例,避免目录条目错位、穿越路径和重复名称。493 收藏 -
Go 的 URL.Path 保存解码后的路径,RawPath 只用于保留有效的原始编码提示;如果把已编码字符串直接放进 Path,URL.String 或 HTTP 客户端会再次转义百分号,形成 %252F。493 收藏 -
Golang · Go教程 | 1个月前 | 部署 · 模板 · Go教程 · 文件系统 · Go 静态资源 go:embed embed.FS fs.ValidPath template.ParseFS
把 HTML 模板和静态资源随 Go 二进制发布时,embed.FS 能提供只读文件树,但路径仍需遵守 fs.ValidPath 规则。本文从 go:embed、template.ParseFS 到运行时读取,说明目录布局、错误分支和部署验收。493 收藏 -
Go 1.24 的 os.Root 和 os.OpenInRoot 如何把不可信文件名限制在指定目录内,本文用最小代码说明路径穿越、符号链接与 Close 的边界。493 收藏 -
Go Webhook 先验签再解析却得到 EOF,通常不是 JSON 有问题,而是 r.Body 已被提前读完。用单一读取边界、长度限制和常量时间比较,把验签与业务解析放回同一条可信数据路径。493 收藏 -
错误码应集中定义为结构体(如errcode.UserPhoneInvalid),避免写死导致维护困难和模块冲突;c.Error()需配合中间件与c.Abort()使用以保留上下文;HTTP状态码与业务码必须分离;透传字段应通过扩展结构体注入,不污染主Response契约。493 收藏 -
Go字符串不可变,安全切片用标准语法;需修改时应操作[]byte,非安全指针操作仅限特殊场景且不推荐。493 收藏 -
根本区别在于参数处理方式:Print/Println是值导向,直接输出任意数量的值;Printf是格式导向,首参必须为格式字符串,否则panic。493 收藏 -
Go结构体嵌套是组合而非继承;仅通过匿名嵌入(如A)且内层字段导出(首字母大写)时,外层才可直接访问该字段,如a.Name等价于a.A.Name,本质是编译器支持的字段提升机制。493 收藏 -
答案:在Golang中使用reflect包可实现结构体字段遍历、tag解析、嵌套类型递归处理及自定义序列化接口,适用于自定义编码、ORM等场景,但性能较低,建议Go1.18+结合泛型优化。493 收藏 -
goroutine上下文切换仅在明确阻塞点或让出点触发:I/O系统调用、通道操作阻塞、锁等待、time.Sleep及runtime.Gosched显式调用。493 收藏