golang的go:embed的使用及注意事项说明

 更新时间:2026年06月23日 10:56:47   作者:风之飘渺  
Golang中使用`:embed标签嵌入静态文件,介绍注意事项包括文件编码问题及嵌入文件目录限制等确保中文正确显示及合理规划文件结构

golang go:embed使用及注意事项

golang嵌入静态文件的方式很多,但是1.16版开始官方也出台了方案。

自带了go:embed标签来完成,但是在使用时会有很多的不方便,我们来看一下。

1、文件不是utf8编码时

输出内容为中文会乱码。

2、嵌入文件只能为源码文件同级目录和子目录下的文件

尤其是第2项是很不方便的,一般的静态文件会单独放在根及目录下,而嵌入的文件则可能在其它目录里。

package main
 
import (
  _ "embed"
)
 
//go:embed test1.txt
var testString string // 当前目录,解析为string类型
 
//go:embed test2.txt
var testByte []byte // 当前目录,解析为[]byte类型
 
//go:embed test/test3.txt
var testAbsolutePath string // 子目录,解析为string类型
 
//go:embed notExistsFile
var testErr0 string // 文件不存在,编译报错:pattern notExistsFile: no matching files found
 
//go:embed dir
var testErr1 string // dir是目录,编译报错:pattern dir: cannot embed directory dir: contains no embeddable files
 
//go:embed ../test.txt
var testErr2 string // 相对路径,不是当前目录或子目录,编译报错:pattern ../test.txt: invalid pattern syntax
 
//go:embed /User/test.txt
var testErr3 string // 绝对路径,编译报错:pattern /User/test.txt: no matching files found
 
func main() {
  println(testString)
  println(string(testByte))
  println(testAbsolutePath)
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Golang实现读取excel文件并转换为JSON格式

    Golang实现读取excel文件并转换为JSON格式

    本文介绍了如何使用Golang读取Excel文件并将其转换为JSON格式,通过安装excelize依赖和创建readExcelToJSON方法,可以实现这一功能,如果需要转换数据类型,可以修改相应的代码,需要的朋友可以参考下
    2025-03-03
  • Golang打印复杂结构体两种方法详解

    Golang打印复杂结构体两种方法详解

    在 Golang 语言开发中,我们经常会使用结构体类型,如果我们使用的结构体类型的变量包含指针类型的字段,我们在记录日志的时候,指针类型的字段的值是指针地址,将会给我们 debug 代码造成不便
    2022-10-10
  • Go中变量命名规则与实例

    Go中变量命名规则与实例

    命名规则涉及变量、常量、全局函数、结构、接口、方法等的命名,下面这篇文章主要给大家介绍了关于Go中变量命名的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • Go语言写入字符串到文件的方法

    Go语言写入字符串到文件的方法

    这篇文章主要介绍了Go语言写入字符串到文件的方法,实例分析了Go语言操作字符串及文本的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • go语言make初始化的实现

    go语言make初始化的实现

    Go语言中的make函数用于初始化切片、映射和通道,本文就来介绍一下go语言make初始化的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • 详解Golang如何实现一个环形缓冲器

    详解Golang如何实现一个环形缓冲器

    环形缓冲器(ringr buffer)是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。本文将利用Golang实现一个环形缓冲器,需要的可以参考一下
    2022-09-09
  • 浅谈Go语言中的次方用法

    浅谈Go语言中的次方用法

    这篇文章主要介绍了浅谈Go语言中的次方用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go使用github.com/pdfcpu/pdfcpu处理PDF的操作指南

    Go使用github.com/pdfcpu/pdfcpu处理PDF的操作指南

    在 Go 生态中,处理 PDF 文件一直是一个比较复杂的需求,pdfcpu 是一个功能强大的 Go 开源库,专门用于 PDF 的解析与处理,本文给大家介绍了Go使用github.com/pdfcpu/pdfcpu处理PDF的操作指南,需要的朋友可以参考下
    2026-03-03
  • Go使用sync.Map来解决map的并发操作问题

    Go使用sync.Map来解决map的并发操作问题

    在 Golang 中 map 不是并发安全的,sync.Map 的引入确实解决了 map 的并发安全问题,本文就详细的介绍一下如何使用,感兴趣的可以了解一下
    2021-10-10
  • Go语言中的Panic和Recover,从原理到实践

    Go语言中的Panic和Recover,从原理到实践

    本文详细介绍了Go语言中的Panic和Recover机制,包括它们的基本概念、用法、最佳实践以及实战应用,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2026-04-04

最新评论