Go问答技术文章
-
goquery 的 Text 会递归读取选中节点及其后代文本节点,所以父元素中的标题、段落和嵌套标签文字都会被合并。本文说明它的实现语义、常见误解和可控提取方式。148 收藏 -
Goja 脚本被 Interrupt 返回后,先等待执行结束并调用 ClearInterrupt,再根据脚本是否产生半执行状态决定复用 Runtime 还是重新创建。358 收藏 -
Golang · Go问答 | 1天前 | 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 收藏 -
Go tview 动态新增输入组件后,组件虽然显示却可能仍由旧输入框接收键盘事件。本文解释 Flex.AddItem、focus 参数与 Application.SetFocus 的职责边界,并给出主事件回调、后台更新、Pages 和 Form 场景的处理方式。304 收藏 -
Go tcell 的 PollEvent 会阻塞等待终端事件,context.Done 或系统信号不会自动让它返回。本文用 EventInterrupt 和 PostEvent 把退出通知送入 tcell 事件流,再由事件循环统一收口,并说明 Fini、ChannelEvents 与重复退出处理的边界。178 收藏 -
Go tcell 窗口缩小后出现旧字符残留,通常不是单个 SetContent 写错,而是 resize 后仍按旧尺寸局部绘制或终端显示与逻辑单元格失步。本文用 EventResize、Size、Sync 和 Clear 区分原因,并给出可复用的重绘写法。316 收藏 -
区分 tcell Show 的日常显示提交与 Sync 的全量重同步,用固定版本事件示例说明普通变化、主动重绘和尺寸事件的取舍,并排除业务状态、布局及外部输出干扰。168 收藏 -
Go huh 中,字段 Validate 返回错误不会让表单退出;用户主动离开才会得到 huh.ErrUserAborted。本文按提交、取消、校验失败和运行时错误四个出口说明 errors.Is 与 Form.State 的用法。377 收藏