删除转换更改语义

问题描述

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

删除转换(更改语义)

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

Screenshot

其他信息:

More info

解决方法

当表达式为浮点型时,

GoLand确实显示了可能冗余的类型转换。在所有其他情况下,该消息为冗余类型转换。前一条语句的不确定性与以下事实有关:有时会使用从float到float的转换来防止编译器的Fused Multiply Add(FMA)指令选择,以避免舍入错误。有关更多详细信息,请参阅this issue。不过,我会同意,更改语义可能过于严格,因为转换结果取决于许多因素。因此,我将措辞更改为可能会更改语义。我还更新了检查的描述,因此其中包含此信息。这些更改将显示在GoLand 2020.3中。