go包embed的基本使用|Go主题月

简介: 首先在项目下建立一个static文件夹(当然名字随意命名,没有规定),然后在下面创建几个文件,分别在文件里填入我是s1/s2/s3文件里的具体如下目录结构

基本使用示例


首先在项目下建立一个static文件夹(当然名字随意命名,没有规定),然后在下面创建几个文件,分别在文件里填入我是s1/s2/s3文件里的具体如下目录结构

网络异常,图片无法展示
|

导入为string

package main
import (
  _ "embed"
  "fmt"
)
//go:embed static/s1.txt
var content string
func main() {
  fmt.Printf("静态文件内容:%s\n",content)
}

输出:

静态文件内容:我是s1文件里的

导入为[]byte

package main
import (
  _ "embed"
  "fmt"
)
//go:embed static/s1.txt
var content []byte
func main() {
  fmt.Printf("静态文件内容:%s\n",string(content))
}

输出:

静态文件内容:我是s1文件里的

导入为FS文件系统

Open方法

package main
import (
  "embed"
  "fmt"
)
//go:embed static
var content embed.FS
func main() {
  // 打开FS文件系统下路径为`static/s1.txt`的文件
  file,err:=content.Open("static/s1.txt")
  defer file.Close()
  if err != nil {
    fmt.Println(err)
  }
    // 读取File的数据
  var c = make([]byte,30)
  l,err:=file.Read(c)
  fmt.Printf("Open的内容:%s\n",c)
  fmt.Printf("Open读取的内容长度:%d\n",l)
}

输出:

Open的内容:我是s1文件里的
Open读取的内容长度:20

ReadDir方法

package main
import (
  "embed"
  "fmt"
)
//go:embed static
var content embed.FS
func main() {
  // 打开文件
  files,err:=content.ReadDir("static")
  if err != nil {
    fmt.Println(err)
  }
  for _,f:=range files{
    fmt.Printf("文件名:%s\n",f.Name())
    fmt.Print("是否是文件夹:")
    fmt.Println(f.IsDir())
    fileInfo,_:=f.Info()
    fmt.Printf("文件权限:%s\n",fileInfo.Mode())
    fmt.Println("--------------------------------------")
  }
}

输出:

文件名:s1.txt
是否是文件夹:false
文件权限:-r--r--r--
--------------------------------------
文件名:s2.txt
是否是文件夹:false
文件权限:-r--r--r--
--------------------------------------
文件名:s3.txt
是否是文件夹:false
文件权限:-r--r--r--
--------------------------------------

ReadFile方法

package main
import (
  "embed"
  "fmt"
)
//go:embed static
var content embed.FS
func main() {
  c2,_:=content.ReadFile("static/s1.txt")
  fmt.Printf("ReadFile内容:%s\n",c2)
}

输出:

ReadFile内容:我是s1文件里的


目录
相关文章
|
9天前
|
编译器 Go 开发者
go语言中导入相关包
【11月更文挑战第1天】
21 3
|
29天前
|
存储 Go 数据库
Go语言Context包源码学习
【10月更文挑战第21天】Go 语言中的 `context` 包用于在函数调用链中传递请求上下文信息,支持请求的取消、超时和截止时间管理。其核心接口 `Context` 定义了 `Deadline`、`Done`、`Err` 和 `Value` 方法,分别用于处理截止时间、取消信号、错误信息和键值对数据。包内提供了 `emptyCtx`、`cancelCtx`、`timerCtx` 和 `valueCtx` 四种实现类型,满足不同场景需求。示例代码展示了如何使用带有超时功能的上下文进行任务管理和取消。
|
2月前
|
存储 Go
Golang语言基于go module方式管理包(package)
这篇文章详细介绍了Golang语言中基于go module方式管理包(package)的方法,包括Go Modules的发展历史、go module的介绍、常用命令和操作步骤,并通过代码示例展示了如何初始化项目、引入第三方包、组织代码结构以及运行测试。
47 3
|
3月前
|
编译器 数据库连接 Go
Go Sync 包:并发的 6 个关键概念
Go Sync 包:并发的 6 个关键概念
|
3月前
|
Go 开发者
|
3月前
|
编译器 Go 开发者
|
3月前
|
存储 SQL Go
一文弄懂Go语言的Context包,值得收藏!
在开发高效的Go应用程序时,处理超时、取消操作和传递请求范围的数据至关重要。Go标准库中的`context`包提供了一套强大的工具,用于在不同层级间传递取消信号、超时和截止时间等信息。本文首先概述了`context`包的核心功能,接着详细介绍了关键方法,如`WithCancel`、`WithDeadline`、`WithTimeout`和`WithValue`的使用场景。通过创建和派生上下文,开发者能更好地管理请求的生命周期,控制长时间运行的操作,并在并发环境中传递必要的数据。
53 1
|
3月前
|
缓存 Go
Go引用包版本更新但是被引用的包的子包并没有出现在vendor中的问题和解决方案
文章讨论了在Go模块项目中升级依赖包版本时遇到的子包未出现在vendor目录的问题,并提供了直接删除旧版本引用并重新执行`go mod vendor`的解决方案。
38 0
|
4月前
|
存储 Go
go语言中fmt格式化包和内置函数汇总
【7月更文挑战第10天】本文介绍fmt包和`Errorf`用于创建格式化的错误消息。`fmt`包还涉及一些接口,如`Formatter`、`GoStringer`、`ScanState`、`Scanner`和`Stringer`,支持自定义格式化和输入/输出处理。
74 1
|
5月前
|
Go
go安装三方包并使用
go安装三方包并使用