Skip to content

Commit 720d8c5

Browse files
committed
chore: menambahkan penjelasan tentang embed package
1 parent c115701 commit 720d8c5

File tree

5 files changed

+120
-0
lines changed

5 files changed

+120
-0
lines changed

utilities/embed/README.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
## Embed
2+
3+
`embed` adalah standard library bawaan Go yang digunakan untuk menyisipkan file atau folder statis (seperti teks, gambar, konfigurasi, dll) langsung ke dalam binary Go saat compile time. Ini sangat berguna untuk menyertakan file seperti template HTML, konfigurasi, skrip, atau file lain yang dibutuhkan aplikasi tanpa harus membaca dari sistem file saat runtime.
4+
5+
Library `embed` mendukung penyisipan:
6+
7+
- File tunggal sebagai `string` atau `[]byte`
8+
- Folder beserta isinya sebagai `embed.FS` (filesystem virtual)
9+
10+
### Tujuan
11+
12+
- Menyertakan file seperti template HTML, konfigurasi, aset, dll.
13+
- Membuat aplikasi mandiri tanpa ketergantungan luar
14+
- Meningkatkan performa dengan menghindari pembacaan dari disk saat runtime
15+
16+
### Contoh Kasus
17+
18+
#### Variabel Tunggal
19+
20+
Membaca isi file single_file.txt sebagai string
21+
22+
```go
23+
//go:embed folder/single_file.txt
24+
var fileString string
25+
```
26+
27+
Membaca isi file single_file.txt sebagai slice of byte.
28+
29+
```go
30+
//go:embed folder/single_file.txt
31+
var fileByte []byte
32+
```
33+
34+
#### Folder dan Multiple File
35+
36+
Membaca file single_file.txt dan semua file dengan ekstensi .hash dalam folder folder/ sebagai filesystem virtual.
37+
38+
```go
39+
//go:embed folder/single_file.txt
40+
//go:embed folder/\*.hash
41+
var folder embed.FS
42+
```
43+
44+
### Contoh Implementasi
45+
46+
```go
47+
package main
48+
49+
import (
50+
"embed"
51+
)
52+
53+
//go:embed folder/single_file.txt
54+
var fileString string
55+
56+
//go:embed folder/single_file.txt
57+
var fileByte []byte
58+
59+
//go:embed folder/single_file.txt
60+
//go:embed folder/*.hash
61+
var folder embed.FS
62+
63+
func main() {
64+
// Mencetak isi fileString
65+
println(fileString)
66+
67+
// Mencetak isi fileByte sebagai string
68+
println(string(fileByte))
69+
70+
// Membaca file1.hash dari folder
71+
content1, _ := folder.ReadFile("folder/file1.hash")
72+
println(string(content1))
73+
74+
// Membaca file2.hash dari folder
75+
content2, _ := folder.ReadFile("folder/file2.hash")
76+
println(string(content2))
77+
}
78+
```

utilities/embed/embed.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package main
2+
3+
import (
4+
"embed"
5+
)
6+
7+
// Variabel fileString menyimpan isi dari file single_file.txt sebagai string
8+
// value dari variabel fileString adalah teks/plain dari file tersebut
9+
//
10+
//go:embed folder/single_file.txt
11+
var fileString string
12+
13+
// Variabel fileByte menyimpan isi dari file single_file.txt sebagai []byte (slice of byte)
14+
// Berguna saat kamu membutuhkan data biner seperti untuk operasi hashing, enkripsi, dll.
15+
//
16+
//go:embed folder/single_file.txt
17+
var fileByte []byte
18+
19+
// Variabel folder menyimpan sistem berkas virtual dari beberapa file
20+
// Tipe embed.FS memungkinkan kita membaca banyak file seperti filesystem biasa
21+
//
22+
//go:embed folder/single_file.txt
23+
//go:embed folder/*.hash
24+
var folder embed.FS
25+
26+
func main() {
27+
// mencetak isi dari fileString
28+
print(fileString)
29+
// mencetak isi dari fileByte sebagai string
30+
print(string(fileByte))
31+
32+
// Membaca file1.hash dari folder
33+
content1, _ := folder.ReadFile("folder/file1.hash")
34+
print(string(content1))
35+
36+
// Membaca file2.hash dari folder
37+
content2, _ := folder.ReadFile("folder/file2.hash")
38+
print(string(content2))
39+
}

utilities/embed/folder/file1.hash

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
hash

utilities/embed/folder/file2.hash

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
hash2
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Bellshade golang repository

0 commit comments

Comments
 (0)