【问题标题】:Delete conversion changes semantics删除转换更改语义
【发布时间】:2020-12-12 03:22:17
【问题描述】:

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

删除转换(改变语义)

我不明白改变语义是什么意思。它实际上改变了什么?

额外信息:

【问题讨论】:

  • 如果您找到了相应的规则(右键单击,然后探索选项以找到导致检查设置的规则) - 它会附带一个简短的说明它们的含义。
  • @zerkms 对,我用检查信息更新了帖子
  • got 是什么类型?好像已经是float32了?
  • @zerkms 是的,got 已经是 float32
  • @zerkms 我不明白为什么会通过删除冗余转换来改变语义。为什么会有什么变化?

标签: go semantics goland


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-07-28
    • 2017-09-23
    • 1970-01-01
    • 2012-07-28
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    相关资源
    最近更新 更多