Константа runtime.Compiler

Константа runtime.Compiler возвращает строку, которая содержит название компилятора, использованного для сборки текущей программы. Она может принимать значения "gc" (стандартный компилятор Go), "gccgo" (компилятор GCC Go) или "gollvm" (компилятор LLVM Go). Эта константа полезна для написания кода, который должен по-разному работать в зависимости от используемого компилятора.

Синтаксис

goruntime.Compiler

Пример

Давайте получим название компилятора, использованного для сборки программы:

gopackage main

import (
  "fmt"
  "runtime"
)

func main() {
  compiler := runtime.Compiler
  fmt.Println(compiler)
}

Результат выполнения кода:

go"gc"

Пример

Давайте используем константу для условной компиляции кода в зависимости от компилятора:

gopackage main

import (
  "fmt"
  "runtime"
)

func main() {
  if runtime.Compiler == "gc" {
    fmt.Println("Using standard Go compiler")
  } else if runtime.Compiler == "gccgo" {
    fmt.Println("Using GCC Go compiler")
  } else {
    fmt.Println("Using unknown compiler:", runtime.Compiler)
  }
}

Результат выполнения кода:

go"Using standard Go compiler"

Пример

Давайте используем константу для выбора оптимальной реализации в зависимости от компилятора:

gopackage main

import (
  "fmt"
  "runtime"
)

func main() {
  switch runtime.Compiler {
  case "gc":
    fmt.Println("Optimized implementation for gc")
  case "gccgo":
    fmt.Println("Optimized implementation for gccgo")
  default:
    fmt.Println("Generic implementation for:", runtime.Compiler)
  }
}

Результат выполнения кода:

go"Optimized implementation for gc"

Смотрите также

  • константу runtime.GOOS,
    которая возвращает название операционной системы
  • константу runtime.GOARCH,
    которая возвращает архитектуру процессора
  • функцию runtime.Version,
    которая возвращает версию Go
  • функцию runtime.NumCPU,
    которая возвращает количество логических процессоров