你正在使用哪个版本的Go( go version
)?
go1.17.6
这个问题在最新版本中是否重现?
是的。
你正在使用什么操作系统和处理器架构( go env
)?
N/A
你做了什么?
查看了(*net.ListenConfig).Listen
方法的文档。
你期望看到什么?
该方法具有以下签名:
func (lc *ListenConfig) Listen(ctx context.Context, network, address string) (Listener, error)
我期望看到关于当ctx
参数完成时会发生什么的描述,以帮助了解#46520。
在Listen
返回后,ctx
是否被使用过?如果是典型的API,它不会被使用,但这似乎是一种将Context
重新引入现有net.Listener
接口的方式,所以我真的不知道。(我尝试阅读源代码,但是ctx
参数通过许多辅助函数和网络抽象接口传递。)
你看到了什么?
完全没有提到ctx
参数或其语义:
Listen在本地网络地址上进行广播。
有关网络和地址参数的描述,请参阅func Listen。
这个API是在CL 72810(Go 1.11)中添加的,用于#9661。
(CC @ianlancetaylor@bradfitz@AudriusButkevicius)
3条答案
按热度按时间e5njpo681#
在
Listen
返回后,上下文参数(context argument)不再用于任何其他用途。它存在是为了允许早期返回DNS查找,因为像internetSocket
这样的功能即使在Listen
的特定情况下也不会使用上下文参数。cotxawn72#
我注意到
DialContext
也没有记录上下文参数是如何使用的(它在DialContext
返回后也没有使用上下文做任何事情)。pcww981p3#
我欢迎上下文的记录。就我个人而言,我不喜欢大Go生态系统倾向于在没有关于如何使用上下文的清晰文档的情况下抛出上下文。有时这会短暂地引起歧义,在这篇博客文章中提到过:
$x_{1}e^{0}f_{1}x$