Embed
Go da embed 1.16 versiyasidan boshlab qo'shilgan imkoniyat bo'lib, fayllarni yoki butun kataloglarni binary ichiga
joylashtirib, dastur kompilyatsiya qilingandan keyin ham ularni ichidan o'qishga imkon beradi. Bu HTML, CSS, JS, config
yoki boshqa resurslarni alohida fayl sifatida saqlab yurmasdan ichiga qo'shib yuborishga juda qulay.
Faylni embed qilish
Masalan, fayl.txt fayl:
Kod:
| package main
import (
_ "embed"
"fmt"
)
//go:embed hello.txt
var hello string
func main() {
fmt.Println(hello)
}
|
- //go:embed hello.txt bu maxsus compiler directive.
- var hello string o'zgaruvchiga, fayl ichidagi matn string sifatida joylashtiriladi.
Faylni []byte sifatida embed qilish
| package main
import (
_ "embed"
)
//go:embed logo.png
var logoBytes []byte // Fayl to'g'ridan-to'g'ri bayt ko'rinishida saqlanadi
func main() {
}
|
Butun katalogni embed qilish
Bir nechta .txt faylni embed qilishning eng yaxshi usuli embed.FS ishlatish.
Shunda barcha fayllar bitta o'zgaruvchida turadi va keraklisini nomi bo'yicha o'qib olasan.
Katalog tuzilishi
.
├── main.go
└── texts
├── file1.txt
├── file2.txt
└── file3.txt
| package main
import (
"embed"
"fmt"
"io/fs"
)
//go:embed texts/*
var txtFiles embed.FS
func main() {
fs.WalkDir(txtFiles, "texts", func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
if !d.IsDir() {
data, _ := txtFiles.ReadFile(path) // []byte sifatida o'qiladi
fmt.Printf("=== %s ===\n%s\n\n", path, string(data))
}
return nil
})
}
|
📍 Toshkent, O'zbekiston
🗓️ 10-avgust, 2025-yil
👤 Farrux Elomonov