Go by Example မြန်မာဘာသာ: Embed Directive

//go:embed သည် compiler directive တစ်ခုဖြစ်ပြီး ပရိုဂရမ်များကို build လုပ်သည့်အခါ မည်သည့်ဖိုင်နှင့် ဖိုဒါများကိုမဆို Go binary ထဲသို့ ထည့်သွင်းခွင့်ပြုသည်။ embed directive အကြောင်း ပိုမိုလေ့လာလိုပါက ဤနေရာ တွင်ဖတ်ရှုနိုင်သည်။

package main

embed package ကို import လုပ်ပါ။ အကယ်၍ သင်သည် ဤ package မှ exported identifiers များကို အသုံးမပြုပါက _ "embed" ဖြင့် blank import လုပ်နိုင်သည်။

import (
    "embed"
)

embed directives သည် Go source file ပါဝင်သည့် directory နှင့် ဆက်စပ်သော paths များကို လက်ခံသည်။ ဤ directive သည် ဖိုင်၏အကြောင်းအရာများကို ၎င်း၏နောက်မှ ချက်ချင်းလိုက်လာသော string variable ထဲသို့ embed လုပ်သည်။

//go:embed folder/single_file.txt
var fileString string

သို့မဟုတ် ဖိုင်၏အကြောင်းအရာများကို []byte ထဲသို့ embed လုပ်နိုင်သည်။

//go:embed folder/single_file.txt
var fileByte []byte

ကျွန်ုပ်တို့သည် ဖိုင်အများအပြားကိုသော်လည်းကောင်း၊ wildcard များဖြင့် ဖိုဒါများကိုပင် embed လုပ်နိုင်သည်။ ဤနေရာတွင် embed.FS type ၏ variable ကို အသုံးပြုထားပြီး ၎င်းသည် ရိုးရှင်းသော virtual file system တစ်ခုကို အကောင်အထည်ဖော်သည်။

//go:embed folder/single_file.txt
//go:embed folder/*.hash
var folder embed.FS
func main() {

single_file.txt ၏ အကြောင်းအရာများကို ပရင့်ထုတ်ပါ။

    print(fileString)
    print(string(fileByte))

Embedded folder မှ ဖိုင်အချို့ကို ရယူပါ။

    content1, _ := folder.ReadFile("folder/file1.hash")
    print(string(content1))
    content2, _ := folder.ReadFile("folder/file2.hash")
    print(string(content2))
}

ဤဥပမာကို run ရန် အောက်ပါ commands များကို အသုံးပြုပါ။ (မှတ်ချက်: go playground ၏ ကန့်သတ်ချက်ကြောင့် ဤဥပမာကို သင့်ကွန်ပျူတာတွင်သာ run နိုင်ပါသည်။)

$ mkdir -p folder
$ echo "hello go" > folder/single_file.txt
$ echo "123" > folder/file1.hash
$ echo "456" > folder/file2.hash
$ go run embed-directive.go
hello go
hello go
123
456

နောက်ဥပမာ: Testing and Benchmarking.