Skip to content

Latest commit

 

History

History
97 lines (60 loc) · 5 KB

README.zh_cn.md

File metadata and controls

97 lines (60 loc) · 5 KB

lib

Go Reference Go Report Card

这是一个Go语言库,包含了一些实用的函数,方便您在开发中快速使用。

安装

要使用这个库,您需要先将其安装到您的项目中。可以通过以下命令安装:

go get github.com/limitcool/lib

函数列表

调试和环境

  • SetDebugMode(debugFunction func()): 用于设置调试模式的函数。它接受一个无参数的函数 debugFunction 作为参数,并根据环境变量 DEBUG_MODE 的值来决定是否执行该函数。

切片操作

  • InSlice(element T, Slice []T) bool: 检查一个元素是否存在于切片中。

  • Unique(slice []T) []T: 返回一个去重后的切片。

  • Push(slice []T, element T) []T: 将一个元素添加到切片末尾。

  • Pop(slice []T) []T: 删除切片末尾的元素并返回。

  • PopFront(slice []T) []T: 删除切片开头的元素并返回。

  • Exclude(slice []T, element T) []T: 返回一个不包含指定元素的切片。

  • Reverse(s []T) []T: 反转切片中的元素顺序。

映射操作

  • Keys(m map[K]V) []K: 返回一个映射中的所有键的切片。

文件和文件夹操作

  • FileExists(filename string) bool: 检查文件是否存在。

  • FolderExists(foldername string) bool: 检查文件夹是否存在。

  • FilesInFolder(dir, filename string) ([]string, error): 返回给定目录下包含指定文件的文件路径列表。

  • ReadFile(filename string) (string, error): 读取给定文件的内容并返回。

  • CopyDir(src, dst, skip string) error: 从源目录复制目录到目标目录,跳过具有特定后缀的文件。

  • CopyDirHasSuffix(src, dst, suffix string) error: 从源目录复制具有特定后缀的文件到目标目录,并重命名复制的文件。

  • CopyFile(src, dst string) error: 复制单个文件从源路径到目标路径。`

  • ParentDir(p string) string: 返回给定路径的父目录。

  • BaseDir(p string) string: 返回给定路径的基本目录。

  • ParentBaseDir(p string) string: 返回给定路径的父目录的基本目录。

  • CompressDir(dir string) error: 将指定目录压缩为zip文件。

类型转换

  • IntToBool(a T) bool: 将一个整数转换为布尔值。

  • ConvertAnyToInterface(anyValue *any.Any) (interface{}, error): 此函数将Google的protobuf的any.Any类型转换为Go的interface{}类型。它首先将any.Any类型解码为字节切片,然后使用json.Unmarshal将字节切片转换为interface{}类型。

  • ConvertInterfaceToAny(v interface{}) (*any.Any, error): 此函数将Go的interface{}类型转换为Google的protobuf的any.Any类型。它首先将interface{}类型编码为字节切片,然后使用anypb.MarshalFrom将字节切片转换为any.Any类型。

  • MustConvertInterfaceToAny(v interface{}) *any.Any: 此函数与ConvertInterfaceToAny功能相似,不同之处在于它忽略了可能的错误并返回一个未初始化的any.Any对象。

  • MustConvertAnyToInterface(anyValue *any.Any) interface{}: 此函数与ConvertAnyToInterface功能相似,不同之处在于它忽略了可能的错误并返回一个未初始化的interface{}对象。

MongoDB

  • MustMongoSlice2StringSlice(i interface{}) []string: 此函数将MongoDB的切片类型转换为Go的字符串切片类型。如果输入的接口类型是primitive.A类型,它会遍历该切片并将每个元素转换为字符串,然后将这些字符串添加到新的字符串切片中并返回。如果输入的接口类型不是primitive.A类型,它将尝试使用cast.ToStringSliceE函数将输入转换为字符串切片。如果转换失败,它将返回一个空的字符串切片。

  • MongoSlice2StringSlice(i interface{}) ([]string, error): 此函数与MustMongoSlice2StringSlice功能相似,但它返回一个字符串切片和一个错误。如果输入的接口类型是primitive.A类型,它会遍历该切片并将每个元素转换为字符串,然后将这些字符串添加到新的字符串切片中并返回。如果输入的接口类型不是primitive.A类型,它将尝试使用cast.ToStringSliceE函数将输入转换为字符串切片。如果转换失败,它将返回一个空的字符串切片和一个错误。

哈希和加密

  • GetSha256Hash(str string) string: 计算给定字符串的SHA-256哈希值并返回。

Web

  • GetPage(c *gin.Context, DefaultPageSize int): 根据请求中的页码参数计算偏移量并返回。

  • ParseToken(token, secret string): 解析和校验给定的token,并返回其包含的声明和可能的错误。

使用示例

package main

import (
    "fmt"
    "github.com/limitcool/lib" 
)

func main() {
    slice := []int{1, 2, 3, 4, 3}
    uniqueSlice := lib.Unique(slice)
    fmt.Println(uniqueSlice) // 输出: [1 2 3 4]
}