Go语言技术文章
-
用 goquery.Attr 的第二个返回值区分 HTML 属性缺失和属性值为空,再把判断封装进一个可复用的 Go 解析小工具。272 收藏 -
用 goquery.Map 把一组 HTML 节点按原顺序转换成强类型 Go 结构体切片,并说明 Attr 缺失、空文本、校验和批量解析时的边界处理。173 收藏 -
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 收藏 -
介绍Goja注册Go回调函数的两种写法,使用完整示例说明参数转换、原生FunctionCall、脚本异常接收和运行时并发限制。340 收藏 -
Goja 执行 JavaScript 后,可以使用 Runtime.ExportTo 将对象直接导出到 Go 结构体;本文说明字段映射、嵌套对象、数组和错误处理的写法。303 收藏 -
Goja 的 Compile 会生成与 Runtime 解耦的 Program,可以只编译一次,再交给多个独立 Runtime 执行。本文用完整示例说明输入注入、运行错误、并发隔离以及 Program 缓存与 Runtime 复用的边界。306 收藏 -
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 收藏 -
用context.WithTimeout或WithCancel建立脚本取消条件,再通过LState.SetContext绑定。示例说明执行错误、资源清理与Go回调的协作取消边界,避免并发关闭同一Lua状态。496 收藏 -
用 GopherLua 的 LTable.ForEach 遍历 Lua 表,结合 LValue 类型判断、必填字段检查和嵌套表转换,把脚本配置安全地映射为 Go 业务对象。426 收藏 -
Go GopherLua 注册 Go 函数的关键是实现 lua.LGFunction,再用 L.NewFunction 包装并通过 SetGlobal 或 SetFuncs 暴露给 Lua。本文围绕参数读取、返回值数量、错误回传和 LState 生命周期给出最小可复用写法。131 收藏 -
给Expr的Compile传入结构体环境,可以提前发现未知变量和字段。本文用正反规则示例区分固定结构体字段与嵌套map动态键,并说明AllowUndefinedVariables、零值及错误处理的边界。343 收藏 -
Go Expr 的普通 Compile 会保留表达式推导出的结果类型,AsBool 则把规则结果约束为 bool。本文用同一组规则说明编译期检查、Run 返回值和动态环境的边界。348 收藏