gpt4 book ai didi

go - 如何使用类型 func(*dialOptions)

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:19 25 4
gpt4 key购买 nike

我正在尝试使用 GoLang grpc 库来制作拨号盘。 GRPC.dial 有一个像这样的方法签名:

func Dial(target string, opts ...DialOption) (*ClientConn, error)

DialOption 是这样的类型:

    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
...
...
}

如何将我的用户代理与 Dial 函数一起传递?

图书馆链接here .

最佳答案

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

https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis

实质是您发送一个可选函数,该函数修改由 Dial 函数创建的 ClientConn。该库带有一组预定义的,包括一个用于更改 user-agent 的:

https://godoc.org/google.golang.org/grpc#WithUserAgent

所以你的代码变成:

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

关于go - 如何使用类型 func(*dialOptions),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49186553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com