首页 > 其他分享 >embed简介

embed简介

时间:2023-08-29 13:59:43浏览次数:38  
标签:文件 嵌入 二进制 简介 Go go embed

go embed 是 Go 1.16 中引入的特性,它允许将文件嵌入到 Go 代码中,以便在运行时访问这些文件。这对于将静态资源(如 HTML、CSS、JavaScript 文件)直接嵌入到 Go 二进制文件中,以及简化文件分发和部署非常有用。下面是关于 go embed 的详细介绍:

使用方式

go embed 支持将文件嵌入到代码中的两种方式:

  1. 嵌入单个文件

    package main
    
    import (
        _ "embed"
        "fmt"
    )
    
    //go:embed myfile.txt
    var content string
    
    func main() {
        fmt.Println(content)
    }
    
  2. 嵌入多个文件

    package main
    
    import (
        _ "embed"
        "fmt"
    )
    
    //go:embed file1.txt file2.txt
    var content string
    
    func main() {
        fmt.Println(content)
    }
    

使用步骤

  1. 导入 _ "embed" 包,这样 embed 包就会被初始化。
  2. 在变量声明前使用 //go:embed 注释,指定要嵌入的文件。你可以指定单个文件,也可以指定多个文件,用空格分隔。

访问嵌入文件

使用 embed 包嵌入的文件是一个 string[]byteembed.FS 类型的变量,你可以直接在代码中访问它们。在运行时,这些变量会被初始化为嵌入文件的内容。

用途

  • 将静态资源嵌入到 Go 二进制文件中,以便简化部署。
  • 将配置文件或其他数据文件嵌入到应用程序中,无需外部文件依赖。
  • 减少文件的分发和管理成本。

注意事项

  • 嵌入的文件内容会在编译时打包到二进制文件中,因此可能会增加二进制文件的大小。
  • 嵌入的文件内容是只读的,无法在运行时修改。
  • 嵌入文件的大小应适度,避免过大导致二进制文件过大。
  • //go:embed 指令只能用于全局变量,不能用于函数内的局部变量。同时,它只能嵌入在 Go 源代码文件同一目录或子目录下的文件或目录。

总之,go embed 是一个强大的特性,使得在 Go 代码中嵌入文件变得更加方便和简单,特别是在需要将静态资源或配置文件包含在应用程序中时。


孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意


标签:文件,嵌入,二进制,简介,Go,go,embed
From: https://www.cnblogs.com/lianshuiwuyi/p/17664534.html

相关文章

  • Redis简介
    文章目录一、Redis是什么?二、Redis优缺点?三、Redis应用场景四、Redis安装和使用五、Redis为什么这么快?1、为什么采用单线程2、Redis的I/O多路复用一、Redis是什么?Redis(RemoteDictionaryServer:远程字典服务)是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于......
  • 探索ChatGPT的Fine-tuning和Embeddings
    1.概述今天我们将深入探索ChatGPT的两项核心技术:Fine-tuning(微调)和Embeddings(嵌入)。这些技术在现代自然语言处理领域扮演着至关重要的角色,为模型的性能提升和适应特定任务需求提供了关键支持。ChatGPT作为GPT家族的一员,已经在多个领域展现了出色的表现,而其背后的Fine-tuning和Emb......
  • 3.2.1 报表类型简介
    一、报表类型简介1.报表分类1.1普通报表使用最多的设计模型,保存为cpt类型分为报表设计、参数设计、图表设计和填报设计四个部分在分页预览模式下不能在报表主体中展示控件单元格间相互影响,很难保持独立性。普通模板设计是单元格设计模型,通过单元格扩展,单元格之间的父子......
  • ProxySQL简介
    ProxySQL是基于MySQL的一款开源的中间件的产品,是一个灵活的MySQL代理层,可以实现读写分离,支持Query路由功能,支持动态指定某个SQL进行缓存,支持动态加载(无需重启ProxySQL服务),故障切换和一些SQL的过滤功能。多层配置结构disk->是sqlite3数据库,默认位置是$DATADIR/pro......
  • PermGen space简介
    PermGenspace简介 PermGenspace的全称是PermanentGenerationspace,是指内存的永久保存区域OutOfMemoryError:PermGenspace从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:(1)这一部分用于存放Class和Meta的信息,Class在被Load的时候被放入PermGensp......
  • Lucene:基于Java的全文检索引擎简介
    Lucene是一个基于Java的全文索引工具包。基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史全文检索的实现:Luene全文索引和数据库索引的比较中文切分词机制简介:基于词库和自动切分词算法的比较具体的安装和使用简介:系统结构介绍和演示HackingLucene:简化的查询分析器,删......
  • 工程简介
    一个uni-app工程,就是一个Vue项目,你可以通过HBuilderX或cli方式快速创建uni-app工程,详见:快速上手。#目录结构一个uni-app工程,默认包含如下目录及文件:┌─uniCloud云空间目录,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb(详见uniCloud)│─components......
  • 页面简介
    uni-app项目中,一个页面就是一个符合VueSFC规范的vue文件。在uni-appjs引擎版中,后缀名是.vue文件或.nvue文件。在uni-appx中,后缀名是.uvue文件这些页面均全平台支持,差异在于当uni-app发行到App平台时,.vue文件会使用webview进行渲染,.nvue会使用原生进行渲染,详见:nvue......
  • 论文解读(PERL)《PERL: Pivot-based Domain Adaptation for Pre-trained Deep Contextua
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:PERL:Pivot-basedDomainAdaptationforPre-trainedDeepContextualizedEmbeddingModels论文作者:EyalBen-David、CarmelRabinovitz、RoiReichart论文来源:2020TACL论文地址:download 论文代码:download视屏......
  • Modbus协议详解1:Modbus的简介
    Modbus协议是应用非常广泛的一种通信协议规约,也是最早应用在工业现场的协议。早在1979年出现工业串行链路以来,Modbus的应用就开始普遍起来,它使得各种自动化设备之间的互相通信得到实现,做嵌入式产品开发的朋友应该不会陌生,Modbus的身影是随处可见的。并且在中国Modbus都已经形成了规......