首页 > 解决方案 > 删除转换更改语义

问题描述

JetBrains 的 GoLand IDE 提供冗余类型转换的自动删除。但是有一个消息:

删除转换(更改语义)

我无法弄清楚更改语义是什么意思。它实际上改变了什么?

截屏

额外信息:

更多信息

标签: gosemanticsgoland

解决方案


当表达式为浮点类型时,GoLand 确实显示了可能冗余的类型转换。在所有其他情况下,消息是Redundant type conversion。前一条语句中的不确定性与以下事实有关:从浮点数到浮点数的转换有时用于阻止编译器的融合乘加 (FMA) 指令选择以避免舍入错误。有关详细信息,请参阅此问题。不过,我同意更改语义可能过于严格,因为转换结果取决于许多因素。因此,我将措辞更改为may change semantics。我还更新了检查的描述,因此它包含此信息。这些变化将出现在 GoLand 2020.3 中。


推荐阅读