#go #semantics #goland
#Вперед #семантика #goland
Вопрос:
GoLand IDE от JetBrains предлагает автоматическое удаление избыточного преобразования типов. Но есть сообщение:
Удаление преобразования (изменяет семантику)
Я не могу понять, что подразумевается под семантикой изменений. Что это на самом деле меняет?
Дополнительная информация:
Комментарии:
1. Если вы найдете соответствующее правило (щелкните правой кнопкой мыши, затем изучите варианты, чтобы найти то, которое ведет к настройкам проверки) — оно будет снабжено небольшим описанием того, что они означают.
2. @zerkms Верно, я обновил сообщение информацией об инспекции
3. Какой тип
got
? Похоже, этоfloat32
уже произошло?4. @zerkms Да,
got
ужеfloat32
есть5. @zerkms Я не понимаю, почему семантика должна быть изменена путем удаления избыточного преобразования. Почему что-то должно измениться?
Ответ №1:
GoLand действительно показывает, возможно, избыточное преобразование типов, когда выражение имеет плавающий тип. Во всех остальных случаях сообщение является преобразованием избыточного типа. Неопределенность в предыдущем утверждении связана с тем фактом, что преобразование из float в float иногда используется для предотвращения выбора команды компилятора Fused Multiply Add (FMA) во избежание ошибок округления. Пожалуйста, обратитесь к этой проблеме для получения более подробной информации. Однако я бы согласился, что семантические изменения, возможно, слишком строги, поскольку результат преобразования зависит от многих факторов. Итак, я изменил формулировку на может измениться семантика. Я также обновил описание проверки, поэтому оно содержит эту информацию. Эти изменения появятся в GoLand 2020.3.