From 1aae2c027e6026ed7c41fc5e25f4edc59a5a4caf Mon Sep 17 00:00:00 2001 From: MarioMang Date: Tue, 25 Apr 2023 18:55:28 +0800 Subject: [PATCH] doc: update docs/golang.md (#359) --- README.md | 2 +- docs/golang.md | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3090b47..c0db0f2 100644 --- a/README.md +++ b/README.md @@ -163,7 +163,7 @@ Quick Reference [Zip](./docs/zip.md) [APT](./docs/apt.md) [tar](./docs/tar.md) -[pacman](./docs/pacman.md) +[pacman](./docs/pacman.md) [Linux Command](./docs/linux-command.md) diff --git a/docs/golang.md b/docs/golang.md index b454825..c2eb0e9 100644 --- a/docs/golang.md +++ b/docs/golang.md @@ -1028,6 +1028,108 @@ func main() { ``` +Golang Embed +--- + +### 嵌入为string + +``` go +package main + +import ( + _ "embed" + "fmt" +) + +//go:embed version.txt +var version string + +func main() { + fmt.Printf("version %q\n", version) +} +``` + +### 嵌入为[]byte + +``` go +package main +import ( + _ "embed" + "fmt" +) + +//go:embed version.txt +var versionByte []byte + +func main() { + fmt.Printf("version %q\n", string(versionByte)) +} +``` + +### 嵌入为embed.FS + +``` go +//go:embed hello.txt +var f embed.FS +func main() { + data, _ := f.ReadFile("hello.txt") + fmt.Println(string(data)) +} +``` + +### 嵌入多个文件 + +``` go +//go:embed hello.txt +//go:embed hello2.txt +var f embed.FS +func main() { + data, _ := f.ReadFile("hello.txt") + fmt.Println(string(data)) + data, _ = f.ReadFile("hello2.txt") + fmt.Println(string(data)) +} +``` + +### 嵌入子文件夹下的文件 + +``` go +//go:embed p/hello.txt p/hello2.txt +var f embed.FS +func main() { + data, _ := f.ReadFile("p/hello.txt") + fmt.Println(string(data)) + data, _ = f.ReadFile("p/hello2.txt") + fmt.Println(string(data)) +} +``` + +### 同一个文件嵌入为多个变量 + +``` go +//go:embed hello.txt +var s string +//go:embed hello.txt +var s2 string +func main() { + fmt.Println(s) + fmt.Println(s2) +} +``` + +### 匹配模式 + +``` go +//go:embed p/* +var f embed.FS +func main() { + data, _ := f.ReadFile("p/.hello.txt") + fmt.Println(string(data)) + data, _ = f.ReadFile("p/q/.hi.txt") // 没有嵌入 p/q/.hi.txt + fmt.Println(string(data)) +} +``` + 杂项 -------------