为了账号安全,请及时绑定邮箱和手机立即绑定

更改函数中的结构字段或返回值

更改函数中的结构字段或返回值

Go
汪汪一只猫 2023-04-10 10:28:59
最后,这个问题肯定要看个人喜好了。尽管如此,我还是想大胆尝试找出哪种风格是首选。我最近注意到我的代码中存在不一致之处。我有一个包含一些字段的结构。现在的问题是当我需要调用一个函数来获取我想要设置的值时,编辑这个字段的惯用方法是什么。我是在函数内部设置值,还是返回它并在我的调用函数中设置它?type SuperStruct struct {    OneValue     string    AnotherValue string}func (s *SuperStruct) makeAnotherValue() {    s.AnotherValue = "Hello there"}func main() {    superStruct := SuperStruct{}    superStruct.makeAnotherValue()}或(具有相同的结构)func (s *SuperStruct) makeAnotherValue() string {    return "Hello there"}func main() {    superStruct := SuperStruct{}    superStruct.AnotherValue = superStruct.makeAnotherValue()}我知道在某些情况下,这些方法中只有一种是有意义的。但我经常发现自己处于两者皆有可能的境地。我想第二种方式可以提供更好的保护,但有时这不是问题。
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

我认为惯用的方法是完全删除您的功能:


func main() {

    superStruct := SuperStruct{AnotherValue:"Hello there"}

}

或者


func main() {

    superStruct := SuperStruct{}

    ...

    superStruct.AnotherValue = "Hello there"

}

除非绝对必要,否则不要构建 getters/setters/create 函数,只做需要的工作。如果你只是设置一个简单的字段,在大多数情况下你不需要工厂来制作字段值。如果您认为该函数是必要的,它需要比这复杂得多(至少几行)并且通常被称为 NewAnotherValue 并且不附加到父结构。


通过另一个函数/结构的每个间接访问都会使代码更难理解。


查看完整回答
反对 回复 2023-04-10
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信