gpt4 book ai didi

http - 圆括号在此表达式中表示什么? (&net.Dialer {超时:5 * time.Second})。DialContext

转载 作者:行者123 更新时间:2023-12-01 22:39:20 26 4
gpt4 key购买 nike

&http.Client{
Transport: &http.Transport{
DialContext: (&net.Dialer{Timeout: 5 * time.Second}).DialContext,
TLSHandshakeTimeout: 5 * time.Second,
},
Timeout: 15 * time.Second,
},
在此代码段中,为什么DialContext字段值放在圆括号中? (&net.Dialer{Timeout: 5 * time.Second}).DialContext,这是什么意思?

最佳答案

用于对表达式进行分组。
如果没有括号,则表示:

&(net.Dialer{Timeout: 5 * time.Second}.DialContext)
因此,这意味着获取 net.Dialer.DialContext方法的地址,这显然不是目的。
目的是创建 *net.Dialer 值(通过获取 net.Dialer{} composite literal的地址),并使用 method value获得作为 net.Dialer方法的函数值,该函数值将分配给函数类型的 Transport.DialContext 字段
func(ctx context.Context, network, addr string) (net.Conn, error)
Dialer.DialContext() 具有相同的签名,但具有其他接收者类型:
func (d *Dialer) DialContext(ctx context.Context, network, address string) (Conn, error)
可以,因为方法值是没有接收器类型的函数类型。

关于http - 圆括号在此表达式中表示什么? (&net.Dialer {超时:5 * time.Second})。DialContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62791406/

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