根据设计,在 Golang 中不会检测到/报告死代码

  • 本文关键字:报告 代码 Golang go dead-code
  • 更新时间 :
  • 英文 :


我可以接受任何函数并将其panic("don't")扔到中间,而不是在任何分支或循环中(使函数的其余部分"死"代码),go编译器将愉快地编译和运行,而不会将其报告为问题。

有人知道这是否是设计使然吗?(编译器大声抱怨未使用的导入,所以为什么不死代码......自从 Go 1 发布以来,他们现在无法返回并更改该行为,并且他们会破坏现有的格式良好的代码。 只是想知道这是疏忽还是故意的。 如果疏忽,我想它必须等到 Go 2(那时他们可以破坏东西)。

简短的回答:没有人真正给老鼠的屁股。

更长的答案:

正如@Volker指出的那样,这并没有太大的区别。

我的问题是,这种行为是否是设计使然。 (这对SO来说可能是一个坏问题,但哦,好吧。 想看看这是故意的,还是只是疏忽。

Java和其他语言都是这样做的,所以我试图看看是否有一些"不,我们在Go中不这样做,因为......"。 似乎并非如此。 据我所知,这不是一个足够重要的问题,不能花时间投入。

我在这里也问过这个问题,回答基本上是的,这是意料之中的,对不起,你不喜欢它,它不会改变。 它已被添加到go vet中,这应该就足够了。这很好 - 我同意。

实际上,这只会暴露糟糕的编译器设计,因为控制流应该在恐慌时结束。因此,编译器甚至应该无法在同一控制流路径上发生恐慌后转换代码。甚至没有回报。如果他们声称这是故意的,那么他们就完全失去了对编译器架构的控制。这是一个编译器错误,而不是语言更改。

相关内容

  • 没有找到相关文章

最新更新