Go バイナリへのファイルの組み込み
必要なテキスト ファイルを含む単一の実行可能ファイルを配布したいですか? Go は、さまざまなプラットフォームに合わせてバイナリにファイルを埋め込むためのソリューションを提供します。
Go 1.16 以降: go:embed ディレクティブ
Go バージョン 1.16 以降では、 go:embed ディレクティブ。ファイルを埋め込むためのエレガントな方法を提供します:
import "embed" //go:embed hello.txt var s string print(s) //go:embed hello.txt var b []byte print(string(b)) //go:embed hello.txt var f embed.FS data, _ := f.ReadFile("hello.txt") print(string(data))
Go 1.4 以降: 柔軟性のために go generated
Go バージョン 1.4 以降では、次の方法に頼ることができます。柔軟性を高めるために生成してください。このアプローチには以下が含まれます:
この手法により、最小限のハードコーディングで複数のテキスト ファイルを埋め込むことができます。例:
main.go
package main import "fmt" //go:generate go run scripts/includetxt.go func main() { fmt.Println(a) fmt.Println(b) }
script/includetxt.go
package main import ( "io" "io/ioutil" "os" "strings" ) func main() { fs, _ := ioutil.ReadDir(".") out, _ := os.Create("textfiles.go") out.Write([]byte("package main \n\nconst (\n")) for _, f := range fs { if strings.HasSuffix(f.Name(), ".txt") { out.Write([]byte(strings.TrimSuffix(f.Name(), ".txt") + " = `")) f, _ := os.Open(f.Name()) io.Copy(out, f) out.Write([]byte("`\n")) } } out.Write([]byte(")\n")) }
ビルドコマンド:
$ go generate $ go build -o main
以上がファイルを Go バイナリに埋め込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。