Компилятор Голанга использует постоянное свертывание?
Просто интересно, использует ли компилятор "go" какую-либо оптимизацию, например, постоянное свертывание.
https://en.wikipedia.org/wiki/Constant_folding
искал в Google, но не смог найти ответ, который я ищу.
2 ответа
Попробуйте написать простую программу: например.
package main
import "fmt"
func main() {
fmt.Println(12345*1000)
}
А теперь скомпилируйте его в сборку
go tool compile -S examle.go
А теперь найдите 12345 в результате, и у вас будет ответ.
Постоянное складывание - Википедия
Свертывание констант - это процесс распознавания и оценки константных выражений во время компиляции, а не их вычисления во время выполнения.
Спецификация языка программирования Go
Постоянные выражения могут содержать только постоянные операнды и вычисляются во время компиляции.
import "math/big"
Пакет big реализует арифметику произвольной точности (большие числа).
Константные выражения Go оцениваются во время компиляции. Компилятор Go gc, написанный на Go, использует пакет big
оценивать числовые константные выражения.