Package Variables and init(): Managing State
Paket o'zgaruvchilari va init(): holatni boshqarish
Funksiya ichidagi lokal o'zgaruvchilardan tashqari, Go'da paket darajasidagi o'zgaruvchilar ham bor — ular funksiyadan tashqarida e'lon qilinadi va shu paket ichidagi barcha funksiyalarga ko'rinadi (agar eksport qilingan bo'lsa, boshqa paketlarga ham).
package config
var Version stringBa'zan paket-darajasidagi o'zgaruvchini oddiy literal bilan emas, biror hisob-kitob orqali boshlash kerak bo'ladi. Buning uchun Go maxsus funksiya beradi: `init()`. Har bir paket nechta init() funksiyasiga ega bo'lishi mumkin, va ular paket birinchi marta ishlatilishidan oldin, avtomatik ravishda, hech kim chaqirmasdan ishga tushadi.
func init() {
Version = "1.0.0"
}init() hech qanday parametr olmaydi, hech narsa qaytarmaydi, va uni hech qachon qo'lda chaqirmaysiz — Go uni o'zi, main() ishga tushishidan oldin bajaradi. Bu odatda paket-darajasidagi holatni sozlash uchun ishlatiladi: standart qiymatlarni o'rnatish, kesh'ni tayyorlash va hokazo.
>_ Exercise
config paketida (config/config.go) eksport qilingan Version string o'zgaruvchisini e'lon qiling. init() funksiyasini yozing — u Versionni "1.0.0"ga tenglashtiradi. main.goda config.Versionni chop eting.
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Paket-darajasidagi o'zgaruvchilar butun paket bo'ylab ko'rinadigan holatni saqlaydi. init() — bu holatni paket ishlatilishidan oldin avtomatik sozlash uchun maxsus, Go tomonidan o'zi chaqiriladigan funksiya.
NEXT UP
Working with the Standard Library: time and strings
$ go run main.go
Kodingizni ishga tushiring