Компилятор Голанга использует постоянное свертывание?

Просто интересно, использует ли компилятор "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 оценивать числовые константные выражения.

Другие вопросы по тегам