cpp

Получение информации об операционной системе

Узнать название операционной системы и архитектуру процессора можно с помощью следующих констант из пакета runtime:

// import "runtime"
fmt.Println(runtime.GOOS)   // windows
fmt.Println(runtime.GOARCH) // amd64

Можно также получить значение переменной окружения OS:

if value, ok := os.LookupEnv("OS"); ok {
   fmt.Println(value) // Windows_NT
}

Получить информацию об операционной системе позволяют следующие функции:

  • TempDir() — возвращает путь к каталогу для временных файлов. Формат функции:
os.TempDir() string

Пример:

fmt.Println(os.TempDir()) // C:\Users\Unicross\AppData\Local\Temp
  • UserHomeDir() — позволяет получить путь к домашнему каталогу пользователя. Формат функции:
os.UserHomeDir() (string, error)

Пример:

fmt.Println(os.UserHomeDir()) // C:\Users\Unicross <nil>
  • UserConfigDir() — позволяет получить путь к каталогу с пользовательскими данными конфигурации. Формат функции:
os.UserConfigDir() (string, error)

Пример:

fmt.Println(os.UserConfigDir())
// C:\Users\Unicross\AppData\Roaming <nil>
  • UserCacheDir() — позволяет получить путь к каталогу с кэшированными данными пользователя. Формат функции:
os.UserCacheDir() (string, error)

Пример:

fmt.Println(os.UserCacheDir())
// C:\Users\Unicross\AppData\Local <nil>
  • Environ() — возвращает слайс строк с переменными окружения и их значениями в формате ключ=значение. Формат функции:
os.Environ() []string

Пример:

arr := os.Environ()
for _, value := range arr {
   fmt.Println(value)
}

Примерный результат:

...
TEMP=C:\Users\Unicross\AppData\Local\Temp
TMP=C:\Users\Unicross\AppData\Local\Temp
USERNAME=Unicross
USERPROFILE=C:\Users\Unicross
...
  • LookupEnv() — позволяет получить значение переменной окружения с названием key. Если переменная существует, то функция вернет ее значение и true. Если переменная не существует, то возвращается комбинация пустой строки и false. Формат функции:
os.LookupEnv(key string) (string, bool)

Получим все пути, входящие в переменную окружения PATH:

if path, ok := os.LookupEnv("PATH"); ok {
   arr := filepath.SplitList(path)
   for _, value := range arr {
      fmt.Println(value)
   }
}
  • Getenv() — возвращает значение переменной окружения с названием key. Если переменная не существует, то возвращается пустая строка. Формат функции:
os.Getenv(key string) string

Пример:

fmt.Println(os.Getenv("GOPATH")) // C:\Users\Unicross\go
  • ExpandEnv() — позволяет заменить все вхождения вида ${NAME} или $NAME в строке, на значения соответствующих переменных окружения. Формат функции:
os.ExpandEnv(s string) string

Пример:

fmt.Println(os.ExpandEnv("${GOPATH} $OS"))
// C:\Users\Unicross\go Windows_NT
  • Setenv() — задает значение переменной окружения с названием key. Функция возвращает объект ошибки или значение nil, если операция выполнена успешно. Формат функции:
os.Setenv(key string, value string) error

Пример:

fmt.Println(os.Setenv("MYVAR", "12")) // <nil>
fmt.Println(os.Getenv("MYVAR"))       // 12
  • Unsetenv() — удаляет переменную окружения с названием key. Функция возвращает объект ошибки или значение nil, если операция выполнена успешно. Формат функции:
os.Unsetenv(key string) error

Пример:

fmt.Println(os.Setenv("MYVAR", "12"))  // <nil>
fmt.Println(os.Getenv("MYVAR"))        // 12
fmt.Println(os.Unsetenv("MYVAR"))      // <nil>
fmt.Printf("%q\n", os.Getenv("MYVAR")) // ""
  • Clearenv() — удаляет все переменные окружения. Формат функции:
os.Clearenv()

Пример:

fmt.Println(os.Getenv("GOPATH")) // C:\Users\Unicross\go
os.Clearenv()
fmt.Println(os.Environ())        // []
  • Getpid() — возвращает идентификатор процесса вызывающего объекта. Формат функции:
os.Getpid() int

Пример:

fmt.Println(os.Getpid()) // 3932
  • Getppid() — возвращает идентификатор процесса родителя вызывающего объекта. Формат функции:
os.Getppid() int

Пример:

fmt.Println(os.Getppid()) // 1008

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Реквизиты

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp