> 백엔드 개발 > Golang > `go:embed` 및 `go generate`를 사용하여 My Go 바이너리에 파일을 어떻게 포함할 수 있나요?

`go:embed` 및 `go generate`를 사용하여 My Go 바이너리에 파일을 어떻게 포함할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-12-17 10:13:25
원래의
441명이 탐색했습니다.

How Can I Embed Files into My Go Binaries Using `go:embed` and `go generate`?

Go 바이너리에 파일 삽입

Go에서는 파일을 별도로 배포하지 않고 컴파일된 실행 파일 내에 포함하려는 시나리오가 발생할 수 있습니다. 이 가이드에서는 go:embed 지시문과 go generate 명령을 사용하여 Go 바이너리에 파일을 삽입하는 두 가지 방법을 살펴봅니다.

go:embed를 사용하여 파일 삽입

Go 1.16에 도입된 go: embed 지시어는 바이너리에 파일을 삽입하는 간단한 방법을 제공합니다. 이 지시어를 사용하면 포함된 파일을 문자열, 바이트 슬라이스 또는 embed.FS 유형으로 보유하는 변수를 직접 정의할 수 있습니다. 예:

import "embed"

//go:embed hello.txt
var s string
로그인 후 복사

go:embed를 사용하면 특히 여러 파일 또는 동적으로 생성된 파일을 처리할 때 파일 삽입 프로세스가 간소화됩니다.

go generate를 사용하여 파일 삽입

Go 1.16 이전에는 go generate 명령이 파일 삽입을 위한 대체 방법을 제공했습니다. 이 방법에는 파일을 읽고 포함된 파일을 문자열 리터럴로 포함하는 Go 파일을 생성하는 사용자 정의 스크립트를 생성하는 작업이 포함됩니다.

  1. 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"))
    }
    로그인 후 복사
  2. 기본 Go 파일에 특별한 설명을 추가합니다.
    기본 Go에 go generate 명령이 포함된 특별한 설명을 추가합니다. 파일. 이 주석은 Go가 컴파일하기 전에 지정된 스크립트를 실행하도록 지시합니다.

    //go:generate go run scripts/includetxt.go
    로그인 후 복사
  3. 프로그램 컴파일:
    go generate를 실행하여 스크립트를 실행하고 textfiles.go를 생성하세요. 문자열 리터럴로 포함된 파일을 포함하는 파일입니다. 그런 다음 go build를 사용하여 프로그램을 빌드하세요.

go generate는 더 많은 유연성을 제공하지만 go:embed는 Go 바이너리에 파일을 삽입하기 위한 더 현대적이고 편리한 접근 방식입니다. 귀하의 개발 요구에 가장 적합한 방법을 선택하세요.

위 내용은 `go:embed` 및 `go generate`를 사용하여 My Go 바이너리에 파일을 어떻게 포함할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿