我正在使用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()
。通过将寄存器功能修改为RPC.RegisterService(new(HelloService), "helloService")
,我得到了第一部分。但是我无法将小写方法导出。
我理解golang只允许导出大写方法。那么小写方法有没有解决方法呢?
答案 0 :(得分:1)
我认为第一个问题是“为什么需要[小写]”说“并且第二个问题需要,如果需要这样,为什么要使用Go?
这是一种约定,即导出大写方法和属性,小写方法和属性是私有的。
答案 1 :(得分:1)
我今天遇到了同样的问题。几年前,这个问题在gorilla-xmlrpc中是solved。现在,您可以在xmlrpc编解码器上注册别名:
var helper = require('sendgrid').mail
var sg = require('sendgrid')(process.env.SENDGRID_API_KEY);
var email = {
send: function(emSubject, senderMail, message, callback){
var from_email = new helper.Email(senderMail);
var to_email = new helper.Email('btnysci@yahoo.com');
var subject = emSubject;
var content = new helper.Content("text/plain", message);
var mail = new helper.Mail(from_email, subject, to_email, content);
var request = sg.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON()
});
console.dir("request");
console.dir(JSON.stringify(request, null, 4));
sg.API(request, function(error, response) {
if(error){
console.log(error);
}
console.log(response.statusCode)
console.log(response.body)
console.log(response.headers)
callback(error);
});
}
}
module.exports = email;
输入例如myCodec := xml.NewCodec()
myCodec.RegisterAlias("MyType.lowerCaseMethod", "MyType.UpperCaseMethod")
将被视为预期。
此函数在godoc中注明,但未在项目README或相关示例中提及。