Вопрос: Как устроены пакеты и что такое init()?
Go
Junior
Без компании
Вопрос: Как устроены пакеты и что такое init()?
Ответы
Пакет — единица компиляции/инкапсуляции. init() вызывается автоматически после инициализации переменных пакета и до main.
```go
package main
import "fmt"
var X = func() int {
fmt.Println("init var")
return 10
}()
func init() {
fmt.Println("init func")
}
func main() {
fmt.Println("main", X)
}
```
init полезен для регистрации (например, драйверов), но злоупотреблять не стоит.