Go问答技术文章
-
GJSON 的 Exists 判断字段是否存在,空字符串判断的是字符串内容;缺失、null、空串和非空串并不是同一种状态。本文用一段最小 Go 示例说明四种状态的差异,并给出输入校验与审计时的选择方式。380 收藏 -
Colly 的 OnError 同时可能面对传输层失败、非 2xx HTTP 响应和解析回调错误。本文用 Response、StatusCode、errors.As 与 ParseHTTPErrorResponse 说明如何分类,并把判断接到日志、重试和异步收尾。485 收藏 -
Go Colly 默认会记录已经访问过的 URL,所以同一个地址第二次 Visit 常见返回 ErrAlreadyVisited。本文从复现、允许重复访问、分页参数和重试边界说明怎样处理,避免用全局开关掩盖请求设计问题。482 收藏 -
解释Go Colly异步请求为何在主程序退出前尚未完成,给出Wait正确位置、本地页面示例和错误记录方法,并说明回调及后台写入的等待边界。474 收藏 -
用一个小型商品列表解析器说明 goquery Find 与 Filter 的核心区别:Find 从当前选择集向下查找后代节点,Filter 只在当前选择集中保留匹配节点,并给出嵌套列表、空结果和组合选择器的判断方法。305 收藏 -
goquery 的 Text 会递归读取选中节点及其后代文本节点,所以父元素中的标题、段落和嵌套标签文字都会被合并。本文说明它的实现语义、常见误解和可控提取方式。148 收藏 -
Goja 脚本被 Interrupt 返回后,先等待执行结束并调用 ClearInterrupt,再根据脚本是否产生半执行状态决定复用 Runtime 还是重新创建。358 收藏 -
Golang · Go问答 | 3星期前 | go · 异步任务 · javascript · setTimeout Promise 事件循环 Go Goja goja_nodejs event loop
Goja 能处理 Promise 反应任务,但不会凭空提供浏览器或 Node.js 那样的定时器事件循环。本文区分 job queue 与 setTimeout,说明 RunString 的边界,并给出 goja_nodejs/eventloop 的接入方式。444 收藏 -
GopherLua 的 CallByParam 通过 Protect 在 PCall 与 Call 之间选择:保护调用把脚本运行错误变成 error,普通调用则让错误 panic。本文对照 Fn、NRet、Handler 和异常边界,说明两种写法该怎样选。363 收藏 -
GopherLua 的 Go 回调不仅要把返回值压入 LState,还要返回准确的数量。本文用一个回调示例拆开压栈数量、return 整数和调用方 NRet 的关系,说明返回 0、返回过大或期望值不一致时为什么会出现 nil、错位值和结果缺失。247 收藏 -
GopherLua 的 LState 不是 goroutine-safe。本文说明为什么不能让多个 goroutine 直接共用一个 LState,并给出独占状态、channel 通信、共享只读字节码和对象池的落地边界。274 收藏 -
给Expr的Compile传入结构体环境,可以提前发现未知变量和字段。本文用正反规则示例区分固定结构体字段与嵌套map动态键,并说明AllowUndefinedVariables、零值及错误处理的边界。343 收藏 -
Go Expr 的普通 Compile 会保留表达式推导出的结果类型,AsBool 则把规则结果约束为 bool。本文用同一组规则说明编译期检查、Run 返回值和动态环境的边界。348 收藏 -
tview Table 打开选择后,部分单元格仍可能因为 NotSelectable、nil 内容或点击回调而无法进入预期选择。本文按表级开关、单元格状态和事件边界给出排查与修复方法。460 收藏 -
tview Flex 的 fixedSize 用来锁定当前方向的尺寸,proportion 只分配固定项目扣除后的剩余空间。本文用侧栏、内容区和动态调整场景说明两者的区别、计算边界与选型方法。302 收藏