В языке Go зарезервированы две функции для специальных целей: main() и init() . Вот что нужно знать об использовании функций main() и init() в Golang .

функция main()
В языке Go основной пакет — это специальный пакет, используемый с исполняемыми программами, и этот пакет содержит функцию main() . Функция main() — это особый тип функции, являющийся точкой входа исполняемых программ. Он не принимает никаких аргументов и ничего не возвращает. Go автоматически вызывает main(), поэтому нет необходимости вызывать main() напрямую, и каждая исполняемая программа должна содержать один основной пакет и функцию main().
Например:
// Chương trình Go minh họa
// khái niệm của hàm main()
// Khai báo gói chính
package main
// Nhập các gói
import (
"fmt"
"sort"
"strings"
"time"
)
// Hàm chính
func main() {
// Sắp xếp slice đưa ra
s := []int{345, 78, 123, 10, 76, 2, 567, 5}
sort.Ints(s)
fmt.Println("Sorted slice: ", s)
// Tìm chỉ mục
fmt.Println("Index value: ", strings.Index("Quantrimang", "ks"))
// Tìm thời gian
fmt.Println("Time: ", time.Now().Unix())
}
Результат:
Sorted slice: [2 5 10 76 78 123 345 567]
Index value: 3
Time: 1257894000
функция init()
Функция init() такая же, как и функция main, она не принимает никаких аргументов и ничего не возвращает. Эта функция присутствует в каждом пакете и вызывается при инициализации пакета. Эта функция объявлена неявно, поэтому вы не можете ссылаться на нее откуда угодно, и разрешено создавать несколько функций init() в одной программе, и они выполняются в том порядке, в котором созданы. Вам разрешено создавать функции init() в любом месте программы, и они вызываются в порядке имен файлов словаря (в алфавитном порядке). Вы можете вставлять операторы, если есть функция init(), но всегда помните, что функция init() выполняется до вызова функции main(), поэтому она не зависит от функции main(). Основное назначение функции init() — инициализация глобальных переменных, которые не могут быть инициализированы в глобальном контексте.
Например:
// Chương trình Go minh họa
// khái niệm của hàm init()
// Khai báo gói chính
package main
// Nhập gói
import "fmt"
// Hàm init() có nhiều nhánh
func init() {
fmt.Println("Welcome to init() function")
}
func init() {
fmt.Println("Hello! init() function")
}
// Hàm chính
func main() {
fmt.Println("Welcome to main() function")
}
Результат:
Welcome to init() function
Hello! init() function
Welcome to main() function