>  기사  >  백엔드 개발  >  golang을 패키징하는 방법

golang을 패키징하는 방법

尚
원래의
2020-01-13 10:33:285465검색

golang을 패키징하는 방법

고랭 패키징 방법:

1. 패키징에 go-bindata 사용:

go-bindata는 매우 간단하며, 디자인 컨셉도 이해하기 어렵지 않습니다. 그 임무는 Go 언어 소스 코드로 정적 파일을 캡슐화한 다음 통합 인터페이스를 제공하는 것입니다. 이 인터페이스를 통해 파일 경로를 전달하면 해당 경로의 파일 데이터가 반환됩니다.

간단히 말하면 정적 파일에서 .go 파일을 생성하여 바이너리 파일로 컴파일할 수 있습니다. 프로젝트가 시작되면 .go 파일이 정적 파일로 릴리스됩니다.

사용 예:

전체 정적 디렉터리를 압축하고 사용 시 해제합니다

# 目录结构
ConfigTest
├── asset
│   └── asset.go 静态文件编译之后的go文件
├── config # 静态文件目录
│   ├── rule.yaml
│   └── rule.json
├── cli # 运行目录
│   ├── config 执行main释放出来的静态文件
│   │   ├── rule.yaml
│   │   └── rule.json
│   └── main # main.go编译之后生成的二进制执行文件
└── main 程序目录
    └── main.go # 源码

정적 파일을 go 파일로 패키징하는 명령을 실행합니다

go-bindata -o=./asset/asset.go -pkg=asset config/...

-o # 指定打包后生成的go文件路径
-pkg # 指定go文件的包名
config/... # 指定需要打包的静态文件路径

2 go.rice를 사용하여

go.rice도 패키징합니다. 정적 파일을 go 파일로 패키징하는 것을 지원하지만 동작은 go-bindata와 매우 다릅니다. 사용 관점에서 보면 go.rice는 실제로 더 편리한 정적 파일 작업 라이브러리입니다. 정적 파일 패키징은 부수적인 기능입니다.

설치

go get github.com/GeertJohan/go.rice/...

사용

go.rice 디렉터리를 쌀처럼 취급합니다.Box 작업

import (
    "fmt"
    "html/template"

    "github.com/GeertJohan/go.rice"
)

func main() {
    // 这里写相对于的执行文件的地址
    box, err := rice.FindBox("theme/default")
    if err != nil {
        println(err.Error())
        return
    }
    // 从目录 Box 读取文件
    str, err := box.String("post.html")
    if err != nil {
        println(err.Error())
        return
    }
    t, err := template.New("tpl").Parse(str)
    fmt.Println(t, err)
}

명령

go.rice의 패키징 명령은 쌀입니다. 사용 방법은 매우 간단합니다. go.rice 작업을 사용하는 go 코드 디렉터리에서 rice embed-go를 직접 실행합니다.

rice embed-go
rice -i "github.com/fuxiaohei/xyz" embed-go // -i 处理指定包里的 go.rice 操作

더 많은 Golang 지식을 보려면 PHP 중국어 웹사이트 golang 튜토리얼 칼럼을 주목하세요.

위 내용은 golang을 패키징하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.