MyGit

lytdev/go-mykit

Fork: 2 Star: 8 (更新于 2024-12-17 10:41:46)

license: Apache-2.0

Language: Go .

打造类似hutool的go工具箱

最后发布版本: v1.3.2 ( 2023-07-07 08:49:32)

GitHub网址

说明

打造类似hutool的 go 工具箱

安装

go get -u github.com/lytdev/go-mykit

工具概览

更多方法参考官方文档

uuid

  • guid.FastUuid() 使用Uuid4生成不带-的uuid
  • snowflake, _ := guid.NewSnowflake(0) 创建雪花算法生成器

datetime

日期时间推荐使用carbon

  • gdatetime.FormatDateTimeToStr 提取日期为统一格式 yyyy-mm-dd hh:mm:ss
  • gdatetime.FormatDurationToSecond 将持续时间转为秒数 1:01:03
  • gdatetime.TimeToStrAsFormat 获取时间字符串
  • gdatetime.TimeToTimeStampMill 时间转毫秒级别时间戳
  • gdatetime.TimestampSecToTime 秒级别时间戳转时间

文件操作

  • gfile.ReadWithLine 按行读取文件的文本
  • gfile.CopyFile 复制文件
  • gfile.FileDir 获取文件所在的路径
  • gfile.MainName 获取文件的名称,不带后缀

加密解密

加密解密推荐使用dongle

支持excel的读取和写入

  • gexcel.ReadFileToList(filePath, 0, ptr)(resultData []T, err error)读取本地excel文件至切片
  • gexcel.ReadFileStreamToList读取excel文件流至切片
  • gexcel.WriteToFile(sheetName, dataList)(f *excelize.File,err error)写入片切数据至excelize.File对象

对象转换

  • gmap2struct.Decodemap转结构

文件下载

大文件分片下载

import (
    "github.com/lytdev/go-mykit/gdownload"
    "github.com/lytdev/go-mykit/helpers/progress"
)

type Listener struct {
}

//实现监听接口
func (l Listener) ProgressChanged(event *hprogress.ProgressEvent) {
    fmt.Println(event)
}

download := gdownload.Instance{
    //5个线程进行下载
    Workers:  5,
    //每个分片5M
    PartSize: 1024 * 1024 * 5,
    //分片的缓存500KB 
    BufSize:  1024 * 500,
}
httpReader := gdownload.HttpReader{Url: "https://playback-tc.videocc.net/polyvlive/76490dba387702307790940685/f0.mp4"}
err := download.Download(context.Background(), "../testdata/example1.mp4", &httpReader, &Listener{})
if err != nil {
    fmt.Println(err)
    return
}

小文件下载

wc := new(WriteCounter)
wc.SetWatch(func(current, total int, percentage float64) {
	fmt.Printf("\r当前已下载大小 %f MB, 下载进度:%.2f%%, 总大小 %f MB",
		float64(current)/1024/1024,
		percentage,
		float64(total)/1024/1024,
	)
})
downloader := NewWithSingle()

err := downloader.SingleDownload(wc, downloadUrl, "../testdata/example2.mp4")
if err != nil {
	fmt.Println(err)
	return
}

最近版本更新:(数据更新于 2024-09-03 11:51:25)

2023-07-07 08:49:32 v1.3.2

2023-07-06 19:12:49 v1.3.1

2023-07-06 18:50:17 v1.3.0

2023-01-08 20:30:28 v1.2.1

2022-12-07 17:52:27 v1.2.0

2022-12-02 15:45:44 v1.1.5

2022-12-02 11:53:24 v1.1.4

2022-12-01 16:33:34 v1.1.3

2022-11-30 15:32:58 v1.1.2

2022-11-29 14:38:22 v1.1.1

主题(topics):

excel, go, go-helpers, go-kits, go-lib, go-utils

lytdev/go-mykit同语言 Go最近更新仓库

2024-12-22 07:52:58 navidrome/navidrome

2024-12-21 20:15:12 SagerNet/sing-box

2024-12-21 03:25:54 SpecterOps/BloodHound

2024-12-19 23:11:24 shadow1ng/fscan

2024-12-19 21:50:56 minio/minio

2024-12-19 10:04:39 istio/istio