我在编写Go代码时正在寻找最佳实践。我有两种方法,它们在逻辑上非常接近。我只想更好地编写代码,并且有一种方法可以将AddAuthor和AddTitle方法合并到一起。
我在想像func(t * Test)SetProperty("名称"," alfa")......这种方法但不知道如何制作这段代码更好。欢迎任何评论。另外,如果你在风格和实践方面给我一个写得很好的Go Code的链接,我会很高兴。
谢谢,
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
}
答案 0 :(得分:4)
这是一种方法:
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
}