
고랭 패키징 방법:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!