Go에서는 파일을 별도로 배포하지 않고 컴파일된 실행 파일 내에 포함하려는 시나리오가 발생할 수 있습니다. 이 가이드에서는 go:embed 지시문과 go generate 명령을 사용하여 Go 바이너리에 파일을 삽입하는 두 가지 방법을 살펴봅니다.
Go 1.16에 도입된 go: embed 지시어는 바이너리에 파일을 삽입하는 간단한 방법을 제공합니다. 이 지시어를 사용하면 포함된 파일을 문자열, 바이트 슬라이스 또는 embed.FS 유형으로 보유하는 변수를 직접 정의할 수 있습니다. 예:
import "embed" //go:embed hello.txt var s string
go:embed를 사용하면 특히 여러 파일 또는 동적으로 생성된 파일을 처리할 때 파일 삽입 프로세스가 간소화됩니다.
Go 1.16 이전에는 go generate 명령이 파일 삽입을 위한 대체 방법을 제공했습니다. 이 방법에는 파일을 읽고 포함된 파일을 문자열 리터럴로 포함하는 Go 파일을 생성하는 사용자 정의 스크립트를 생성하는 작업이 포함됩니다.
Go 파일을 생성하는 스크립트를 생성합니다.
별도의 스크립트 파일에서 텍스트 파일을 읽고 이를 문자열 리터럴로 새 파일에 씁니다. 예를 들면 다음과 같습니다.
package main import ( "fmt" "io/ioutil" "os" "strings" ) // Reads all .txt files in the current folder // and encodes them as string literals in textfiles.go 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 파일에 특별한 설명을 추가합니다.
기본 Go에 go generate 명령이 포함된 특별한 설명을 추가합니다. 파일. 이 주석은 Go가 컴파일하기 전에 지정된 스크립트를 실행하도록 지시합니다.
//go:generate go run scripts/includetxt.go
go generate는 더 많은 유연성을 제공하지만 go:embed는 Go 바이너리에 파일을 삽입하기 위한 더 현대적이고 편리한 접근 방식입니다. 귀하의 개발 요구에 가장 적합한 방법을 선택하세요.
위 내용은 `go:embed` 및 `go generate`를 사용하여 My Go 바이너리에 파일을 어떻게 포함할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!