Go Binaries에 파일 삽입
프로그래밍에서는 텍스트 파일과 같이 추가 리소스가 필요한 실행 파일을 배포하는 것이 일반적입니다. 배포를 단순화하고 여러 파일을 배포할 필요가 없도록 하려면 이러한 리소스를 바이너리 자체에 포함하는 것이 좋습니다.
go:embed를 사용하여 파일 포함(Go 1.16 이상)
Go 1.16에서는 go:embed 지시어가 삽입을 위한 간단한 방법을 제공합니다. 파일:
package main import "embed" // Embed the "hello.txt" file as a string //go:embed hello.txt var s string // Embed the "hello.txt" file as a byte slice //go:embed hello.txt var b []byte // Embed the "hello.txt" file as an embed.FS object //go:embed hello.txt var f embed.FS func main() { // Read the file contents as a string data, _ := f.ReadFile("hello.txt") println(string(data)) }
go generate를 사용하여 파일 삽입(Go 1.16 이전)
이전 버전의 Go generate에서는 대체 접근 방식을 제공합니다.
예시 코드:
main.go
package main import "fmt" //go:generate go run scripts/includetxt.go func main() { fmt.Println(a) fmt.Println(b) }
scripts/includetxt.go
package main import ( "io" "io/ioutil" "os" "strings" ) // Embed all .txt files as string literals func main() { fs, _ := ioutil.ReadDir(".") out, _ := os.Create("textfiles.go") for _, f := range fs { if strings.HasSuffix(f.Name(), ".txt") { out.WriteString(strings.TrimSuffix(f.Name(), ".txt") + " = `") f, _ := os.Open(f.Name()) io.Copy(out, f) out.WriteString("`\n") } } }
편집:
$ go generate $ go build -o main
추가 참고:
위 내용은 `go:embed` 및 `go generate`를 사용하여 Go 바이너리에 파일을 어떻게 포함할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!