最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang嵌入資源文件實現(xiàn)步驟詳解

 更新時間:2023年01月09日 16:27:23   作者:夢想畫家  
在應用程序中附帶代碼以外的其他資源可能會很有用,常用的實現(xiàn)方法是嵌入對象或數(shù)據(jù)。在數(shù)據(jù)庫中存儲數(shù)據(jù)應用中,需要定義schema,在應用啟動時創(chuàng)建表,但如果找不到schema文件呢?Go1.16提供embed包讓實現(xiàn)變得簡單,之前很多第三方包實現(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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Golang實現(xiàn)復合數(shù)據(jù)類型

    Golang實現(xiàn)復合數(shù)據(jù)類型

    Go語言的復合數(shù)據(jù)類型包括數(shù)組、切片、映射、結構體和接口,本文就來介紹一下Golang實現(xiàn)復合數(shù)據(jù)類型,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • 從并發(fā)到并行解析Go語言中的sync.WaitGroup

    從并發(fā)到并行解析Go語言中的sync.WaitGroup

    Go?語言提供了許多工具和機制來實現(xiàn)并發(fā)編程,其中之一就是?sync.WaitGroup。本文就來深入討論?sync.WaitGroup,探索其工作原理和在實際應用中的使用方法吧
    2023-05-05
  • 使用Gomock進行單元測試的方法示例

    使用Gomock進行單元測試的方法示例

    這篇文章主要介紹了使用Gomock進行單元測試的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • 淺析Go語言bitset的實現(xiàn)原理

    淺析Go語言bitset的實現(xiàn)原理

    bitset包是一個將非負整數(shù)映射到布爾值的位的集合,這篇文章主要通過開源包bitset來為大家分析一下位集合的設計和實現(xiàn),感興趣的可以學習一下
    2023-08-08
  • 淺談golang并發(fā)操作變量安全的問題

    淺談golang并發(fā)操作變量安全的問題

    這篇文章主要介紹了淺談golang并發(fā)操作變量安全的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 一文帶你了解Go語言中的匿名函數(shù)

    一文帶你了解Go語言中的匿名函數(shù)

    無論是在Go語言還是其他編程語言中,匿名函數(shù)都扮演著重要的角色,本文將詳細介紹Go語言中匿名函數(shù)的概念和使用方法,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-06-06
  • GO語言常用的文件讀取方式

    GO語言常用的文件讀取方式

    這篇文章主要介紹了GO語言常用的文件讀取方式,涉及一次性讀取、分塊讀取與逐行讀取等方法,是非常實用的技巧,需要的朋友可以參考下
    2014-12-12
  • 一文帶你搞懂Go如何讀寫Excel文件

    一文帶你搞懂Go如何讀寫Excel文件

    Excelize是一個用純Go語言編寫的庫,提供了一組函數(shù),可以對XLAM?/?XLSM?/?XLSX?/?XLTM?/?XLTX文件進行讀寫。支持讀寫由Microsoft?Excel?2007及以后版本生成的電子表格文檔。本文就將用它實現(xiàn)讀寫Excel文件操作,感興趣的可以學習一下
    2022-11-11
  • go設置多個GOPATH的方式

    go設置多個GOPATH的方式

    這篇文章主要介紹了go設置多個GOPATH的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go語言中并發(fā)的工作原理

    Go語言中并發(fā)的工作原理

    本文詳細講解了Go語言中并發(fā)的工作原理,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07

最新評論

郯城县| 腾冲县| 海城市| 和平县| 牙克石市| 永川市| 盐边县| 志丹县| 吉林市| 新沂市| 沽源县| 乌鲁木齐市| 溧阳市| 中西区| 察雅县| 梁山县| 曲沃县| 毕节市| 灌云县| 玉门市| 长岛县| 霍山县| 手游| 大姚县| 厦门市| 漠河县| 尖扎县| 鹤峰县| 房山区| 资溪县| 武乡县| 丰城市| 千阳县| 图片| 太和县| 纳雍县| 抚宁县| 福安市| 文山县| 沙湾县| 莱西市|