English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
язык Go сохраняет две функции специального назначения, которые являютсяmain()иinit()функция.
в языке 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() такая же, как и функция 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()