猿问

Gorilla xmlrpc 的小写方法

我正在使用Gorilla XMLRPC。根据示例,


func (h *HelloService) Say(r     *http.Request, 

                           args  *struct{Who string}, 

                           reply *struct{Message string}) error {

    reply.Message = "Hello, " + args.Who + "!"

    return nil

}

并RPC.RegisterService(new(HelloService), "")为我提供服务HelloService.Say()。我想有helloService.say()。我能够通过将 register 函数修改为RPC.RegisterService(new(HelloService), "helloService"). 但我无法导出小写方法。


我知道 golang 只允许导出大写方法。那么小写方法有什么解决方法吗?


烙印99
浏览 243回答 2
2回答

明月笑刀无情

我今天遇到了同样的问题。几年前,这个问题在 gorilla-xmlrpc 中得到了解决。现在您可以在 xmlrpc 编解码器上注册别名:myCodec&nbsp;:=&nbsp;xml.NewCodec() myCodec.RegisterAlias("MyType.lowerCaseMethod",&nbsp;"MyType.UpperCaseMethod")带有 eg 的输入<methodName>MyType.lowerCaseMethod</methodName>将按预期识别。该函数在godoc中有说明,但在项目README或相关示例中未提及。

慕莱坞森

我认为第一个问题是“为什么需要[小写]”说,第二个问题需要是,如果需要那样,为什么要使用 Go?大写方法和属性是导出的,小写方法和属性是私有的,这是一个约定。
随时随地看视频慕课网APP

相关分类

Go
我要回答