Skip to content

Commit b2d810e

Browse files
authored
Merge pull request #367 from devlights/devlights/add-embed-package-examples-366
add embed package examples (#366)
2 parents 88cb912 + 02c6ce7 commit b2d810e

File tree

14 files changed

+216
-0
lines changed

14 files changed

+216
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# サンプルリスト
2+
3+
このディレクトリには以下のサンプルがあります。
4+
5+
|file|example name|note|
6+
|----|------------|----|
7+
|embed\_string.go|embed\_string|iota の基本的な使い方のサンプルです.|
8+
|embed\_bytes.go|embed\_bytes|embed パッケージの機能を確認するサンプルです (バイト列として値を取得)|
9+
|embed\_fs\_singlefile.go|embed\_fs\_singlefile|embed パッケージの機能を確認するサンプルです (embed.FSとして単独ファイルを操作)|
10+
|embed\_fs\_multifiles.go|embed\_fs\_multifiles|embed パッケージの機能を確認するサンプルです (embed.FSとして複数ファイルを操作)|
11+
|embed\_fs\_filter.go|embed\_fs\_filter|embed パッケージの機能を確認するサンプルです (埋め込むファイルをフィルタリング)|
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dotnet
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
golang
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
golang
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
python
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/*
2+
Package embeds -- embed パッケージについてのサンプルが配置されているパッケージです。
3+
*/
4+
package embeds
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package embeds
2+
3+
import (
4+
_ "embed"
5+
"encoding/hex"
6+
"os"
7+
)
8+
9+
//go:embed helloworld.txt
10+
var b []byte
11+
12+
// EmbedBytes は、embed パッケージの機能を確認するサンプルです (バイト列として値を取得)
13+
func EmbedBytes() error {
14+
dumper := hex.Dumper(os.Stdout)
15+
defer dumper.Close()
16+
17+
if _, err := dumper.Write(b); err != nil {
18+
return err
19+
}
20+
21+
return nil
22+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package embeds
2+
3+
import (
4+
"embed"
5+
"fmt"
6+
"io/fs"
7+
8+
"github.com/devlights/gomy/output"
9+
)
10+
11+
//go:embed data/go*.txt
12+
var filteredContent embed.FS // 埋め込むファイルをフィルタリングしている
13+
14+
// EmbedFsFilter は、embed パッケージの機能を確認するサンプルです (埋め込むファイルをフィルタリング)
15+
func EmbedFsFilter() error {
16+
var (
17+
entries []fs.DirEntry
18+
buf []byte
19+
err error
20+
)
21+
22+
entries, err = filteredContent.ReadDir("data")
23+
if err != nil {
24+
return err
25+
}
26+
27+
for _, entry := range entries {
28+
var (
29+
name = entry.Name()
30+
path = fmt.Sprintf("data/%s", name)
31+
)
32+
33+
buf, err = content.ReadFile(path)
34+
if err != nil {
35+
return err
36+
}
37+
38+
output.Stdoutl(fmt.Sprintf("[%s]", name), string(buf))
39+
}
40+
41+
return nil
42+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package embeds
2+
3+
import (
4+
"embed"
5+
"fmt"
6+
7+
"github.com/devlights/gomy/output"
8+
)
9+
10+
//go:embed data
11+
//go:embed helloworld.txt
12+
var content embed.FS
13+
14+
// EmbedFsMultifiles は、embed パッケージの機能を確認するサンプルです (embed.FSとして複数ファイルを操作)
15+
func EmbedFsMultifiles() error {
16+
var (
17+
buf []byte
18+
err error
19+
)
20+
21+
//
22+
// 埋め込まれたファイルの操作
23+
//
24+
buf, err = content.ReadFile("helloworld.txt")
25+
if err != nil {
26+
return err
27+
}
28+
29+
output.Stdoutl("[helloworld.txt]", string(buf))
30+
output.StdoutHr()
31+
32+
//
33+
// 埋め込まれたディレクトリの操作
34+
//
35+
entries, err := content.ReadDir("data")
36+
if err != nil {
37+
return err
38+
}
39+
40+
for _, entry := range entries {
41+
if entry.IsDir() {
42+
continue
43+
}
44+
45+
var (
46+
name = entry.Name()
47+
path = fmt.Sprintf("data/%s", name)
48+
)
49+
50+
buf, err = content.ReadFile(path)
51+
if err != nil {
52+
return err
53+
}
54+
55+
output.Stdoutl(fmt.Sprintf("[%s]", name), string(buf))
56+
}
57+
58+
return nil
59+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package embeds
2+
3+
import (
4+
"embed"
5+
"encoding/hex"
6+
"os"
7+
)
8+
9+
//go:embed helloworld.txt
10+
var f embed.FS
11+
12+
// EmbedFsSingleFile は、embed パッケージの機能を確認するサンプルです (embed.FSとして単独ファイルを操作)
13+
func EmbedFsSingleFile() error {
14+
b, err := f.ReadFile("helloworld.txt")
15+
if err != nil {
16+
return err
17+
}
18+
19+
dumper := hex.Dumper(os.Stdout)
20+
defer dumper.Close()
21+
22+
if _, err := dumper.Write(b); err != nil {
23+
return err
24+
}
25+
26+
return nil
27+
}

0 commit comments

Comments
 (0)