Golang工具goaccessor:自动生成getter和setter方法的最佳实践

Golang工具goaccessor:自动生成getter和setter方法的最佳实践 在项目开发过程中,我经常发现自己需要为Go结构体编写重复的getter和setter方法。为了简化这一流程,我开发了goaccessor——一个能自动完成此任务的工具。

以下是一个简单的集成示例:

// 使用getter
bookIDs := slices.Map(books, (*Book).GetID)
// 注:slices是我们内部使用的一个泛型库。

// 不使用getter
bookIDs := slices.Map(books, func (book *Book) int { return book.ID })

我知道自动生成这类方法可能看起来不太常规,也可能不完全符合传统的Go编码风格。不过,我还是想在这里分享出来,以收集社区的反馈、见解和潜在的改进建议。: )

项目仓库链接


更多关于Golang工具goaccessor:自动生成getter和setter方法的最佳实践的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

谢谢

更多关于Golang工具goaccessor:自动生成getter和setter方法的最佳实践的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


不,绝对不行。

没有人应该使用这个!

Go 不是 Java!

goaccessor 是一个很有用的工具,它通过代码生成减少了重复劳动,同时保持了类型安全。下面是一个使用示例,展示如何为结构体字段自动生成 getter 和 setter:

//go:generate go run github.com/yujiachen-y/goaccessor/cmd/goaccessor -type=User -getter -setter
package model

type User struct {
    id   int
    name string
}

// 生成后,可以直接调用:
func main() {
    u := &User{}
    u.SetID(100)
    u.SetName("Alice")
    
    fmt.Println(u.GetID())   // 100
    fmt.Println(u.GetName()) // "Alice"
}

这个工具特别适合字段较多或需要频繁修改的结构体,能有效减少手写代码的错误。对于需要封装内部状态的场景,自动生成的 getter/setter 提供了统一的访问接口。

回到顶部