草庐IT

getter-setter

全部标签

go - 做 getters 和 setters 的推荐方法

我有一个将用go编写的项目,它在一个结构中有超过30个字段,在允许设置值之前需要验证这些字段。在python中,我可能会使用描述符或至少使用属性来执行此操作,以尽可能避免样板代码。我的问题是在go中执行此操作的最佳方法通常是什么?只是在结构中使用小写变量并为每个属性设置get和set函数,还是有更好的方法来防止样板代码? 最佳答案 来自godocs:Godoesn'tprovideautomaticsupportforgettersandsetters.There'snothingwrongwithprovidinggettersa

go - golang中 slice 结构的setter方法

我有一个定义如下的支柱typeReqJSONstruct{Requeststruct{Datastruct{Objectstruct{User[]User`json:"user"`}`json:"object"`}`json:"data"`}`json:"request"`}typeUserstruct{UserIDstring`json:"userid"`IPAddrstring`json:"ipaddr"`Noofusersstring`json:"noofusers"`Qosstring`json:"qos"`IDstring`json:"id"`Domainstring`jso

go - golang中 slice 结构的setter方法

我有一个定义如下的支柱typeReqJSONstruct{Requeststruct{Datastruct{Objectstruct{User[]User`json:"user"`}`json:"object"`}`json:"data"`}`json:"request"`}typeUserstruct{UserIDstring`json:"userid"`IPAddrstring`json:"ipaddr"`Noofusersstring`json:"noofusers"`Qosstring`json:"qos"`IDstring`json:"id"`Domainstring`jso

struct - 为什么我的 setter 不在匿名结构字段上工作?

我刚刚开始学习Go,这里有一些我无法完全理解的行为:packagemainimport"fmt"typeMessageinterface{SetSender(senderstring)}typemessagestruct{senderstring}typeJoinstruct{messageChannelstring}func(mmessage)SetSender(senderstring){m.sender=sender}funcmain(){varmsgMessagemsg=Join{}msg.SetSender("Jim")fmt.Printf("%s",msg)}这会打印{{}

struct - 为什么我的 setter 不在匿名结构字段上工作?

我刚刚开始学习Go,这里有一些我无法完全理解的行为:packagemainimport"fmt"typeMessageinterface{SetSender(senderstring)}typemessagestruct{senderstring}typeJoinstruct{messageChannelstring}func(mmessage)SetSender(senderstring){m.sender=sender}funcmain(){varmsgMessagemsg=Join{}msg.SetSender("Jim")fmt.Printf("%s",msg)}这会打印{{}

go - go语言getters和setters接口(interface)

我是go语言的新手,在使用getter和setter为来自不同文件的结构指定接口(interface)时遇到问题。来源src/github.com/user/interfacespackageinterfacestypeIFoointerface{Name()stringSetName(namestring)}src/github.com/user/foopackagefooimport"github.com/user/interfaces"typeFoostruct{namestring}func(f*interfaces.IFoo)SetName(namestring){f.nam

go - go语言getters和setters接口(interface)

我是go语言的新手,在使用getter和setter为来自不同文件的结构指定接口(interface)时遇到问题。来源src/github.com/user/interfacespackageinterfacestypeIFoointerface{Name()stringSetName(namestring)}src/github.com/user/foopackagefooimport"github.com/user/interfaces"typeFoostruct{namestring}func(f*interfaces.IFoo)SetName(namestring){f.nam

function - 为什么 Go 函数字段 setter 不保留函数?

给定这个短程序:packagemainimport"fmt"typeFoostruct{doerfunc()}func(fFoo)SetDoer(doerfunc()){f.doer=doer}funcmain(){foo:=Foo{func(){fmt.Println("original")}}foo.doer()foo.SetDoer(func(){fmt.Println("replacement")})foo.doer()}输出是:originaloriginal我原以为是:originalreplacement为什么不是呢?请注意,如果我直接在main()中设置foo.doer

function - 为什么 Go 函数字段 setter 不保留函数?

给定这个短程序:packagemainimport"fmt"typeFoostruct{doerfunc()}func(fFoo)SetDoer(doerfunc()){f.doer=doer}funcmain(){foo:=Foo{func(){fmt.Println("original")}}foo.doer()foo.SetDoer(func(){fmt.Println("replacement")})foo.doer()}输出是:originaloriginal我原以为是:originalreplacement为什么不是呢?请注意,如果我直接在main()中设置foo.doer

Go Getter 方法与字段,正确命名

在EffectiveGo中,它是clearlystated在未导出字段(以小写字母开头)的情况下,getter方法应具有相同的字段名称但以大写字母开头;他们给出的示例是owner作为字段,Owner作为方法。他们明确建议不要在getter方法名称前使用Get。我经常遇到需要导出字段以进行JSON编码、与ORM一起使用或其他与反射相关的目的(IIRC反射可以读取但不能修改未导出的字段)的情况,因此我的字段需要被称为Owner在上面的例子中,因此不能有Owner方法。是否有一种惯用的命名方式可以解决这种情况?编辑:这是我遇到的具体示例:typeUserstruct{Usernamestri