توجيه //go:embed هو توجيه للمترجم (compiler directive) يسمح للبرامج بتضمين ملفات ومجلدات عشوائية في الملف الثنائي (binary) لبرنامج Go وقت التصريف.
package main
import (
"embed"
)
توجيه embed يخبر Go بتضمين محتوى الملفات في المتغيرات التالية له. هنا نقوم بتضمين محتوى ملف نصي في متغير string.
//go:embed folder/single_file.txt
var fileString string
يمكنك أيضاً تضمين محتوى الملف كـ []byte.
//go:embed folder/single_file.txt
var fileByte []byte
يمكننا أيضاً تضمين عدة ملفات أو حتى مجلدات كاملة. هذا يستخدم نوع embed.FS الذي يطبق واجهة نظام ملفات للقراءة فقط.
//go:embed folder/*.hash
//go:embed folder/subdir/*.txt
var folder embed.FS
func main() {
طباعة محتوى single_file.txt.
print(fileString)
print(string(fileByte))
استخراج محتوى ملف من المجلد المضمن.
content1, _ := folder.ReadFile("folder/file1.hash")
print(string(content1))
content2, _ := folder.ReadFile("folder/subdir/file2.txt")
print(string(content2))
}
للمزيد من المعلومات، راجع التوثيق الرسمي لحزمة embed.
تشغيل البرنامج (بافتراض وجود المجلد والملفات المطلوبة):
$ mkdir -p folder/subdir
$ echo "hello go" > folder/single_file.txt
$ echo "123" > folder/file1.hash
$ echo "456" > folder/subdir/file2.txt
$ go run embed-directive.go
hello go
hello go
123
456 المثال التالي: الاختبارات والمقاييس.