English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

базовый учебник Golang

контрольные инструкции Golang

функции и методы Golang

структуры Golang

срезы и массивы Golang

строки (String) Golang

указатели Golang

интерфейсы Golang

конкурентоспособность Golang

исключения (Error) Golang

другие компоненты Golang

Функции main и init в Go

язык Go сохраняет две функции специального назначения, которые являютсяmain()иinit()функция.

функция main

в языке Go,mainпакет - это особый пакет программного обеспечения, который используется вместе с выполняемым программным обеспечением, и этот пакет содержитmain()функция.main()Функция является особого типа функцией, это точка входа для выполняемого программы. Она не принимает никаких параметров и не возвращает никакого содержимого. Из-за возможности автоматического вызоваmain()функция, поэтому не нужно явно вызыватьmain()функция, и каждый выполняемый программный продукт должен содержать package main иmain()функция.

// декларация главного пакета
package main
// импорт пакетов
import (
    "fmt"
    "sort"
    "strings"
    "time"
)
func main() {
    // сортировка массива
    s := []int{345, 78, 123, 10, 76, 2, 567, 5}
    sort.Ints(s)
    fmt.Println("Отсортированный массив: ", s)
    // поиск индекса
    fmt.Println("Индекс: ", strings.Index("w3codebox", "ks"))
    // отображение текущего времени
    fmt.Println("Время: ", time.Now().Unix())
}

Вывод:

Отсортированный массив:  [2 5 10 76 78 123 345 567]
Индекс:  -1
Время:  1593335332

Функция init()

Функция init() такая же, как и функция main(), она не принимает никаких параметров и не возвращает ничего. Эта функция существует в каждом пакете, и она вызывается при инициализации пакета. Функция является имплицитно объявленной, поэтому к ней нельзя обращаться из任何一个 места, и можно создать несколько функций init() в одном и том же программном обеспечении, и они будут выполняться в порядке их создания. Функцию init() можно создать в любом месте программы, и они будут вызываться в порядке алфавитного порядка имен файлов. Это позволяет放置 инструкции в функции init(), но всегда помните, что функция init() должна быть выполнена до вызова функции main(), поэтому она не зависит от функции main().   Основная цель функции init() - инициализация глобальных переменных, которые невозможно инициализировать в глобальном контексте.

package main 
  
import "fmt"
  
// несколько функций init() 
func init() { 
    fmt.Println("Добро пожаловать в функцию init()") 
} 
  
func init() { 
    fmt.Println("Привет! Функция init()") 
} 
  
func main() { 
    fmt.Println("Добро пожаловать в функцию main()") 
}

Вывод:

Добро пожаловать в функцию init()
Привет! Функция init()
Добро пожаловать в функцию main()