Go语言技术文章
-
tview Flex 的 fixedSize 用来锁定当前方向的尺寸,proportion 只分配固定项目扣除后的剩余空间。本文用侧栏、内容区和动态调整场景说明两者的区别、计算边界与选型方法。302 收藏 -
Go tview 中,后台 goroutine 不要直接修改界面 primitive。把变更放进 Application.QueueUpdate 或 QueueUpdateDraw:前者只保证串行执行,后者执行后立即重绘;事件处理器内部则直接修改并交给主循环绘制。159 收藏 -
Go tview 动态新增输入组件后,组件虽然显示却可能仍由旧输入框接收键盘事件。本文解释 Flex.AddItem、focus 参数与 Application.SetFocus 的职责边界,并给出主事件回调、后台更新、Pages 和 Form 场景的处理方式。304 收藏 -
用 tview.Form 把文本、下拉框、复选框和多行备注统一收集到 Go 结构体,说明回调绑定、键盘交互、刷新开销与空值处理。240 收藏 -
用 tview Pages 保留主界面并叠加 Modal,结合完整示例说明确认、取消、Esc、移除临时页和焦点恢复,对比隐藏复用与移除重建的生命周期取舍。135 收藏 -
Go tcell 的 PollEvent 会阻塞等待终端事件,context.Done 或系统信号不会自动让它返回。本文用 EventInterrupt 和 PostEvent 把退出通知送入 tcell 事件流,再由事件循环统一收口,并说明 Fini、ChannelEvents 与重复退出处理的边界。178 收藏 -
Go tcell 窗口缩小后出现旧字符残留,通常不是单个 SetContent 写错,而是 resize 后仍按旧尺寸局部绘制或终端显示与逻辑单元格失步。本文用 EventResize、Size、Sync 和 Clear 区分原因,并给出可复用的重绘写法。316 收藏 -
Go tcell 程序退出时要把 Screen.Fini 绑定到初始化成功后的生命周期,让正常返回、Ctrl+C 和 panic 都经过清理出口;同时说明 os.Exit、SIGKILL 等不会执行 defer 的边界。444 收藏 -
区分 tcell Show 的日常显示提交与 Sync 的全量重同步,用固定版本事件示例说明普通变化、主动重绘和尺寸事件的取舍,并排除业务状态、布局及外部输出干扰。168 收藏 -
Go tcell 处理键盘事件时,用 Key() 区分 KeyRune 与命名功能键,再用 Str() 读取普通字符;本文补充 Ctrl、Shift-Tab 和终端协议的兼容边界。340 收藏 -
Go tcell 绘制中文、全角符号或 emoji 时,不能按 rune 数量固定让列坐标加一。本文从覆盖现象出发,说明 Put 返回的显示宽度、右边界判断和宽字符占两格的绘制方式。174 收藏 -
Go huh 中,字段 Validate 返回错误不会让表单退出;用户主动离开才会得到 huh.ErrUserAborted。本文按提交、取消、校验失败和运行时错误四个出口说明 errors.Is 与 Form.State 的用法。377 收藏 -
huh 表单结束后变量仍是旧值,通常是 Value 绑定了副本、变量被遮蔽,或 Run 没有完成。本文给出指针绑定、状态判断和 Key 读取的排查方法。103 收藏 -
Go huh 动态选项未刷新时,应区分静态 Options、OptionsFunc 闭包和 bindings。通过区域与队列联动示例说明变量地址绑定、缓存、旧选择失配及空状态处理。367 收藏 -
Go huh 给输入框添加字段校验函数的关键是调用 Input.Validate,把字符串规则返回为 error;本文用空值、长度与业务约束说明如何组合校验,并处理错误显示、Value 绑定和可访问模式边界。442 收藏