Golang嵌入資源文件實現(xiàn)步驟詳解
Go文檔中展示了多種方式實現(xiàn)外部資源嵌入,包括文本文件、圖片、ios文件等:
文本文件
package main
import _ "embed"
//go:embed schema.sql
var tableCreate string
func main() {
print(tableCreate)
}
在構建時,schema.sql內容會嵌入至應用中,使得tableCreate字符串變量可用。與通過環(huán)境變量嵌入信息至應用類似。
輸出結果:
create table sys_user(
id int,
name varchar(36),
birth date
)
圖片文件
如果是圖片,可以編碼為二進制字節(jié)切片:
package main
import (
_ "embed"
"encoding/base64"
)
//go:embed logo.png
var logo []byte
func main() {
print(base64.RawStdEncoding.EncodeToString(logo))
}
鏡像文件
一旦在內存中,logo文件就可以通過HTTP連接提供給客戶端使用。使用embed.FS接口與上面示例不同,數(shù)據(jù)僅當需要時才會加載至內存,這種方法對于大文件非常有用:
package main
import (
"embed"
"fmt"
)
//go:embed ubuntu-20-cloud.iso
var f embed.FS
func main() {
data, _ := f.ReadFile("ubuntu-20-cloud.iso")
fmt.Printf("Total bytes: %d\n", len(data))
}
Go是一種非常好的系統(tǒng)編程語言,它提供了許多用于管理文件系統(tǒng)和網(wǎng)絡的包,應用可能會在程序中發(fā)送類似ISO映像文件,可以隨時將其寫入磁盤中。
前端應用文件
有時希望把前端應用的文件嵌入至應用中,和http服務一起實現(xiàn)完整web應用。
// frontend holds our static web server content.
//go:embed image/* template/*
//go:embed public/index.html
//go:embed css/*var frontend embed.FS
現(xiàn)在可以簡單連接embed.FS至自定義HTTP中間件或處理器,從特點路由或路徑給用戶提供文件。下面時Go文檔中提供的示例:
http.Handle( "/public/",
http.StripPrefix( "/public/",
http.FileServer( http.FS(frontend))))
你的API可以被綁定到路徑/API/v1/,然后你嵌入的任何靜態(tài)內容都會通過/public/路由提供訪問。
編譯打包
go build .
通過編譯打包,會生成獨立可執(zhí)行文件??截愔寥魏文夸浺部梢灾苯舆\行,不會因為找不到資源文件而報錯。
到此這篇關于Golang嵌入資源文件實現(xiàn)步驟詳解的文章就介紹到這了,更多相關Go嵌入資源文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
從并發(fā)到并行解析Go語言中的sync.WaitGroup
Go?語言提供了許多工具和機制來實現(xiàn)并發(fā)編程,其中之一就是?sync.WaitGroup。本文就來深入討論?sync.WaitGroup,探索其工作原理和在實際應用中的使用方法吧2023-05-05

