go工具小包

go工具小包

十月 20, 2024

项目地址

项目简介

  • 这个是用go语言编写的一个工具包合集

快速使用

  1. 引入
1
go get github.com/ledgerbiggg/ledger_util
  1. email
  • 发送简单邮件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func TestSendUtil_IsCCOrBCCSend(t *testing.T) {
err := NewSimpleSendUtil("xxx@qq.com",
"xxx@qq.com",
"test",
"test",
nil,
&User{
Identity: "",
Username: "xxx@qq.com",
Password: "xxx",
},
QQ).IsCCOrBCCSend(true, false)

if err != nil {
t.Error(err)
}
}
  1. http
  • 简单请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func TestGet(t *testing.T) {
p := param{
Name: "",
Age: 0,
}
newUrl, err := MontageURL("https://www.baidu.com", p)
if err != nil {
t.Error(err)
}
get, err := NewHttpDos(newUrl, nil, nil).Get()
if err != nil {
t.Error(err)
}
t.Log(string(get))
}
  1. excel
  • 生成excel
1
2
3
4
5
6
7
8
9
10
11
12
13
func TestExcelHelper_GenerateExcel(t *testing.T) {
people := []any{
Person{"Alice", 30, "USA"},
Person{"Bob", 25, "Canada"},
Person{"Charlie", 35, "UK"},
}
// 文件名,sheet名,表头,数据
helper := NewExcelHelper("persons1.xlsx", "Sheet1", []string{"Name", "Age", "Country"}, people)
err := helper.GenerateExcel()
if err != nil {
t.Error(err)
}
}
  1. vedio断点续传
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
http.HandleFunc("/api/video", func(w http.ResponseWriter, r *http.Request) {
// 打开视频文件
videoFile, err := os.Open("videos/video2.mp4")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer videoFile.Close()

// 获取文件信息
fileInfo, err := videoFile.Stat()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}

// 设置响应头,指定文件内容类型
//w.Header().Set("Content-Type", "video/mp4")
w.Header().Set("Content-Type", "video/mp4")

// 设置响应头,指定文件总长度
w.Header().Set("Content-Length", strconv.FormatInt(fileInfo.Size(), 10))

// 处理 Range 请求头
rangeHeader := r.Header.Get("Range")
if rangeHeader != "" {
// 解析 Range 请求头,获取起始和结束位置
start, _, err := parseRange(rangeHeader, fileInfo.Size())
if err != nil {
http.Error(w, "Invalid range request", http.StatusRequestedRangeNotSatisfiable)
return
}
// 设置响应状态码为 206 Partial Content
//w.WriteHeader(206)

// 设置读取文件的起始位置
videoFile.Seek(start, 0)

// 发送部分内容给客户端
http.ServeContent(w, r, "", fileInfo.ModTime(), videoFile)
} else {
// 如果没有 Range 请求头,直接发送整个文件内容
http.ServeContent(w, r, "", fileInfo.ModTime(), videoFile)
}
})
http.ListenAndServe(":9999", nil)