我在编写 Go 代码时寻找最佳实践。我有两种方法,它们在逻辑上非常接近。我只是想更好地编写代码,有没有一种方法可以将 AddAuthor 和 AddTitle 方法与 Go 结合在一起。
我在想 func (t *Test) SetProperty("name", "alfa") 之类的东西......一种方法,但不知道如何使这段代码更好。欢迎任何意见。另外,如果你给我一个在风格和实践方面写得很好的 Go 代码的链接,我会很高兴。
谢谢,
type Test struct {
Title string
Author string
}
func (t *Test) AddAuthor(name string) (*Test, error) {
if err := validateStringLength(name); err != nil {
return nil, err
}
t.Author = name
return t, nil
}
func (t *Test) AddTitle(title string) (*Test, error) {
if err := validateStringLength(title); err != nil {
return nil, err
}
t.Title = title
return t, nil
}
func validateStringLength(field string) error {
if len(field) > 255 {
return fmt.Errorf("field %v is too long.", field)
}
return nil
}
最佳答案
这是一种方法:
func (t *Test) AddAuthor(author string) (*Test, error) {
return t.setString(&t.Author, author)
}
func (t *Test) AddTitle(title string) (*Test, error) {
return t.setString(&t.Title, title)
}
func (t *Test) setString(p *string, v string) (*Test, error) {
if len(v) > 255 {
return nil, fmt.Errorf("field %v is too long.", v)
}
*p = v
return t, nil
}
关于go - Go Lang 中更漂亮的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36339189/