Go में init() फ़ंक्शन कब और किस क्रम में निष्पादित होता है?
सभी को नमस्ते! मैंने अभी-अभी Go सीखना शुरू किया है और `init()` फ़ंक्शन पर ध्यान गया। दस्तावेज़ीकरण में कहा गया है कि यह स्वचालित रूप से निष्पादित होता है, लेकिन मैं समझ नहीं पा रहा हूँ: कब? और यदि मेरे पास एक पैकेज में कई फ़ाइलें हैं, प्रत्येक में init() है तो क्या होगा? और यदि मैं कोई तृतीय-पक्ष लाइब्रेरी जोड़ूँ जिसमें भी init() हो तो?
यहाँ मेरा उदाहरण है। `database` पैकेज में `db.go` फ़ाइल है:
```go
package database
import "fmt"
var Connection string
func init() {
fmt.Println("डेटाबेस आरंभीकरण...")
Connection = "postgres://user:pass@localhost/mydb"
}
```
और `main.go` फ़ाइल:
```go
package main
import (
"fmt"
"myproject/database"
)
func init() {
fmt.Println("main में मेरा init")
}
func main() {
fmt.Println(database.Connection)
}
```
मैंने उम्मीद की थी कि पहले database में init, फिर main में, और फिर main() निष्पादित होगा। लेकिन क्या यह हमेशा ऐसा ही होता है? यदि मैं एक पैकेज इम्पोर्ट करूँ जो init() वाले किसी अन्य पैकेज को इम्पोर्ट करता है तो क्या होगा? क्या क्रम गारंटीकृत है? और क्या मैं init() पर भरोसा कर सकता हूँ?