如何使用type func(* dialOptions)

时间:2018-03-09 04:20:43

标签: go grpc

我正在尝试使用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

1 个答案:

答案 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"))