Ответ
Go — это статически компилируемый язык. Исходный код на Go компилируется непосредственно в нативный машинный код для целевой платформы (ОС и архитектуры). В результате получается один исполняемый бинарный файл, который не требует для запуска виртуальной машины или интерпретатора.
Пример компиляции:
// main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, compiled world!")
}
Команда для компиляции:
go build main.go
Эта команда создаст исполняемый файл main
(или main.exe
в Windows).
Ключевые особенности компиляции в Go:
- Статическая линковка: По умолчанию Go создает статически скомпонованные бинарные файлы. Это означает, что все необходимые библиотеки включаются в один исполняемый файл, что сильно упрощает развертывание приложения (деплой).
- Кросс-компиляция: Go из коробки поддерживает кросс-компиляцию. Можно легко собрать исполняемый файл для другой операционной системы и архитектуры, просто указав переменные окружения
GOOS
иGOARCH
. Например, сборка под Linux из macOS:GOOS=linux GOARCH=amd64 go build main.go
- Команда
go run
: Эта команда является удобной оберткой, которая сначала компилирует код во временный файл, а затем запускает его. Это удобно для быстрой разработки, но для продакшена всегда используетсяgo build
.