Golang embed

Golang embed

前言 在写项目的时候,有时候不可避免地要处理静态文件,如果将源码直接作为软件提供问题不大,使用相对路径读取这些静态文件就可以了。但是如果项目作为库向外公布显然不可行,使用相对路径是读取不到文件的,而使用绝对路径却会带来更大的问题:因为不同的人使用,路径绝对不可能完全一致的。如果要求用户在指定路径下放置这些依赖的静态文件,虽然可行但是会给用户带来很大的困扰,而且这样的实现方式显然不够优雅。这时候,将这些静态文件一起打包进可执行文件似乎是一个完美的解决方案,那么如何实现呢?最简单的方法是硬编码,将静态文件以文本或字节数组的形式直接编入源代码,go 也有一些库帮你自动生成代码,比如 go-bindata。很明显,这个库已经终止维护了,这是因为在 go 1.16 版本,官方发布了 embed 完美地解决了这个问题。本文简要介绍 embed 的一些基础用法。 embed 假设我们有一个文件 hello.txt Hello World! Hello go embed! 我们要写一个程序读取其中的内容并输出到终端: // file: main.go package main import ( "fmt" "os" ) func main() { s, err := os.ReadFile("./hello.txt") if err != nil { panic(err) } fmt.Println(string(s)) } 很简单,不是吗? ➜ tree . . ├── go.mod ├── hello.txt └── main.go 0 directories, 3 files ➜ go build main.go ➜ ./main Hello World! Hello go embed!...

八月 13, 2022 · Aimer Neige
Blue Poison

配置 go 开发环境

由于某些网络原因1,本文所提到的部分网站、下载链接可能在中国大陆地区无法访问,请自行查找解决方案,本文不再赘述。 如果你在阅读本文时遇到了任何问题,请查阅 go 语言官方网站。 下载预编译文件 在 Download Go 选择适合你平台的最新版本文件下载。 本文不推荐使用一键安装包的方式安装 go 语言,即请不要直接下载下图所示的文件: 我们在下面的 Stable versions 后找到最新版本的 go,选择适合自己电脑系统与架构的压缩包。要选择 Archive 而不要选择 Installer。 Tip 当然使用 msi 等一键安装包安装也是完全可以的,如果你想要使用一键安装包的方式安装 go,请查阅其他资料。 如果你想要通过源码安装,请自行查阅 通过源码构建。 安装 & 配置 下面分别具体说明不同平台下安装和配置的方法。 Linux 解压压缩文件 这里我们可以直接使用 官方安装指南 提供的指令来解压。 rm -rf /usr/local/go && tar -C /usr/local -xzf go1.17.linux-amd64.tar.gz 本指令会将 go 安装在 /usr/local/go 路径下,因此执行命令需要 root 权限。当然,如果想要将 go 安装在其他路径也是可以的,但是还是推荐安装在官方推荐的路径下。 Info 如果你使用了其他的路径来安装 go,在之后的配置过程中记得要修改 GOROOT 变量修改为你所安装的路径。 执行命令前请先切换工作目录,确保当前路径下有刚刚下载好的压缩包。 Warning 压缩包名 go1.17.linux-amd64.tar.gz 可能有所不同,这取决于你安装的 go 版本和操作系统及处理器架构。 配置环境变量 成功解压后,如果你尝试直接在终端执行 go 指令,你会发现系统并没有识别到你刚安装的 go 二进制文件,这是因为我们还没有对 go 的环境变量进行配置。...

八月 24, 2021 · Aimer Neige