这个算是 goland bug 吗?

2023-08-12 17:13:17 +08:00
 bli22ard

goland 提示有问题的情况


func main() {
	var dia proxy.Dialer
	d1 := dia.(proxy.ContextDialer).DialContext

	d1()

}

d1 具有 4 个参数,其实应该为 3 个参数

这种情况是可以编译通过的

goland 提示没有问题的情况


func main() {
	var dia proxy.Dialer
	dc := dia.(proxy.ContextDialer)
	d1 := dc.DialContext

	d1()

}
	

这个 d1 是正确的三个参数

版本
GoLand 2023.2
Build #GO-232.8660.185, built on July 26, 2023
Runtime version: 17.0.7+7-b1000.6 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
928 次点击
所在节点    问与答
3 条回复
koplonjaslon02
2023-08-12 23:10:38 +08:00
感觉是优先级的问题,(dia.(proxy.ContextDialer)).DialContext 和 dia.((proxy.ContextDialer).DialContext) 是不是不一样?
bli22ard
2023-08-13 22:02:32 +08:00
@koplonjaslon02 是一样的
bli22ard
2023-08-13 23:04:39 +08:00
https://youtrack.jetbrains.com/issue/GO-14258/False-positive-type-inference-in-type-assertions 看起来是 goland bug 。搞不懂的是,为什么官方没有回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/964723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX