我正在尝试使用GoLang grpc库来制作表盘。 GRPC.dial有一个这样的方法签名:
router.post('/signup', function(req, res, next) {
passport.authenticate('local-signup', function(err, user) {
if (err) { return next(err) }
if (!user) { return res.redirect('/users/signup') }
res.redirect('/users/login');
})(req, res, next);
});
和DialOption是这样的类型:
func Dial(target string, opts ...DialOption) (*ClientConn, error)
dialOptions本身就是一个带有其他参数的结构,但我想在transport.ConnectOptions中传递userAgent字符串,这是另一个结构:
DialOptions func(*dialOptions)
如何将我的用户代理与Dial功能一起传递?
图书馆已关联here。
答案 0 :(得分:0)
这是Dave Cheney在此概述的功能选项示例:
https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
本质上是您发送一个可选功能,修改ClientConn
函数正在创建的Dial
。该库附带了一组预定义的,包括一个用于更改user-agent
:
https://godoc.org/google.golang.org/grpc#WithUserAgent
所以你的代码变成了:
dialWithUserAgent := grpc.Dial("target", grpc.WithUserAgent("user-agent"))