Go 如何使用类型func(*拨号选项)

Go 如何使用类型func(*拨号选项),go,grpc,Go,Grpc,我正在尝试使用GoLang grpc库进行拨号。GRPC.dial具有如下方法签名: func Dial(target string, opts ...DialOption) (*ClientConn, error) DialOptions func(*dialOptions) DialOption的类型如下: func Dial(target string, opts ...DialOption) (*ClientConn, error) DialOptions func

我正在尝试使用GoLang grpc库进行拨号。GRPC.dial具有如下方法签名:

func Dial(target string, opts ...DialOption) (*ClientConn, error)
    DialOptions func(*dialOptions)
DialOption的类型如下:

func Dial(target string, opts ...DialOption) (*ClientConn, error)
    DialOptions func(*dialOptions)
dialOptions本身是一个带有其他参数的结构,但我想在transport.ConnectOptions中传递userAgent字符串,它是另一个结构:

type dialOptions struct {
unaryInt    UnaryClientInterceptor
streamInt   StreamClientInterceptor
...
...
...

copts       transport.ConnectOptions
}


type ConnectOptions struct {
    // UserAgent is the application user agent.
    UserAgent string
...
...
}
如何将我的用户代理与拨号功能一起传递到中


该库已链接。

这是Dave Cheney在此概述的功能选项示例:

本质上是您发送一个可选函数,该函数修改由
拨号
函数创建的
ClientConn
。该库附带了一系列预定义功能,包括一个用于更改
用户代理的功能:

因此,您的代码变成:

dialWithUserAgent := grpc.Dial("target", grpc.WithUserAgent("user-agent"))

我想,我刚刚明白了。函数的作用是:。