函数式工具箱:samber/lo、mo、hot 与 ro
Go 标准库至今不提供通用的 map/filter 集合操作。Go 1.18 泛型落地后,samber 系列是填补这一缺口的主要选择:lo 负责集合变换,mo 负责 Option/Result 类型,hot 负责进程内缓存,ro 负责异步事件流。四个库解决的问题互不重叠,共同特点是零依赖、泛型优先、类型安全,可单独引入,也可组合使用。
9 min read
Notes on Agent runtimes — design decisions laid open: why it is this way, what it costs, and when it stops being true.
Go 标准库至今不提供通用的 map/filter 集合操作。Go 1.18 泛型落地后,samber 系列是填补这一缺口的主要选择:lo 负责集合变换,mo 负责 Option/Result 类型,hot 负责进程内缓存,ro 负责异步事件流。四个库解决的问题互不重叠,共同特点是零依赖、泛型优先、类型安全,可单独引入,也可组合使用。
函数内对形参切片执行 append,不会反映到调用方一侧:append 操作的是函数内那份 24 字节切片头副本,而非调用方持有的头部。解释这类行为,需要考察运行时层面的三个事实:slice 的内存布局、map 并发读写触发 fatal error 的机制,以及 make 预分配能省去多少次中间拷贝。
Quote of the day · November 15关于接受Breaking Bad
You got the job. Do yourself a favor and learn to take yes for an answer.