Go Lang中更漂亮的方法
我正在寻找编写Go代码时的最佳实践。我有两种方法,它们在逻辑上非常接近。我只是想更好地编写代码,是否有一种方法可以将AddAuthor和AddTitle方法与Go结合在一起 我在想一些类似于func t*Test SetPropertyname,alfa。。这是一种方法,但不知道如何改进代码。欢迎提出任何意见。另外,如果你给我一个关于风格和实践方面的好的Go代码链接,我会很高兴 谢谢Go Lang中更漂亮的方法,go,Go,我正在寻找编写Go代码时的最佳实践。我有两种方法,它们在逻辑上非常接近。我只是想更好地编写代码,是否有一种方法可以将AddAuthor和AddTitle方法与Go结合在一起 我在想一些类似于func t*Test SetPropertyname,alfa。。这是一种方法,但不知道如何改进代码。欢迎提出任何意见。另外,如果你给我一个关于风格和实践方面的好的Go代码链接,我会很高兴 谢谢 type Test struct {
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
}
这里有一种方法:
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
}
你为什么要回t?你是变异的t,除非你改变一些基本的东西,比如append Doesah,否则你不必返回它。你是对的,我在Ruby zone花了太多时间,忘记了所有的指针:非常感谢你。在开始学习Python一个月后,我不得不将全部时间调回Python,在非常紧迫的期限内完成一个项目。三个星期后,潘基文几乎什么都不记得了。我感觉到你的痛苦!如果要执行分配验证,请不要公开这些字段,否则肯定会被滥用。另外,为字段setter命名函数SetFieldName,为字段getter命名函数FieldName。同意@nevets。这是做它的方式为什么你返回t?你是变异的t,除非你改变一些基本的东西,比如append Doesah,否则你不必返回它。你是对的,我在Ruby zone花了太多时间,忘记了所有的指针:非常感谢你。在开始学习Python一个月后,我不得不将全部时间调回Python,在非常紧迫的期限内完成一个项目。三个星期后,潘基文几乎什么都不记得了。我感觉到你的痛苦!如果要执行分配验证,请不要公开这些字段,否则肯定会被滥用。另外,为字段setter命名函数SetFieldName,为字段getter命名函数FieldName。同意@nevets。这是一种方法@manorie一定要将其标记为在信用到期时给予信用的答案:@manorie一定要将其标记为答案,以便在信用到期时给予信用: