用途:在 Go 中使用 fp-go 库的 Lens(透镜)光学结构,对嵌套数据结构进行不可变读取与更新。Lens[S, A] 聚焦结构 S 中的字段 A,提供 Get 读取与 Set 不可变更新。
主要能力:
- 代码生成:给结构体加 // fp-go:Lens 注解并运行 go generate ./...,生成 Lens、Prism 及指针版本,指针字段自动生成可选透镜。
- 手动创建:MakeLens(值类型)、MakeLensRef(指针类型)、MakeLensStrict(可比较字段,值相等时跳过复制)、MakeLensWithEq(自定义相等判断,用于切片、map 等不可比较类型)。
- 组合:Compose 组合值外层结构,ComposeRef 组合指针外层结构。
- 可选字段:LensO[S, A] 即 Lens[S, Option[A]],配合 FromNillable、FromNillableRef、ComposeOption、Compose 处理多级可选嵌套。
- 修改:Modify 对聚焦值应用变换函数,也可在管道中使用包级函数。
使用方式:导入 github.com/IBM/fp-go/v2/optics/lens 及 option、function、option、eq、array、number 等子包。代码生成命令为 go run github.com/IBM/fp-go/v2/main lens --dir . --filename gen_lens.go。
适用场景:需要以函数式风格安全更新深层嵌套结构、处理可选指针字段、避免手动复制的 Go 项目。
限制:资料未提供性能基准、版本兼容范围或错误处理细节;具体行为以库文档为准。