Wann und in welcher Reihenfolge wird die Funktion init() in Go ausgeführt?
Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und bin auf die Funktion `init()` gestoßen. In der Dokumentation steht, dass sie automatisch ausgeführt wird, aber ich verstehe nicht: wann genau? Und was passiert, wenn ich mehrere Dateien in einem Paket habe, jede mit einer init()? Und wenn ich eine externe Bibliothek einbinde, die auch eine init() hat?
Hier ist mein Beispiel. Es gibt ein Paket `database` mit einer Datei `db.go`:
```go
package database
import "fmt"
var Connection string
func init() {
fmt.Println("Initialisierung der DB...")
Connection = "postgres://user:pass@localhost/mydb"
}
```
Und die Datei `main.go`:
```go
package main
import (
"fmt"
"myproject/database"
)
func init() {
fmt.Println("Mein init in main")
}
func main() {
fmt.Println(database.Connection)
}
```
Ich habe erwartet, dass zuerst init in database ausgeführt wird, dann in main, und dann main(). Aber ist das immer so? Was ist, wenn ich ein Paket importiere, das ein anderes Paket mit init() importiert? Ist die Reihenfolge garantiert? Und kann man sich auf init() verlassen?
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs
Docker und Go: Containerisierung von Anwendungen in Golang
SOLID-Prinzipien in TypeScript: Theorie und Praxis mit Beispielen