fun

package module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 13, 2024 License: Apache-2.0 Imports: 35 Imported by: 1

README

algorithm

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: 二分查找法
func TestBinarySearch(t *testing.T) {
	// 已排序的整数数组
	nums := []int{1, 3, 5, 6, 8, 9, 11, 15, 18, 20}

	// 要查找的值
	val := 11

	// 调用二分查找函数
	index := fun.BinarySearch(nums, val)

	// 输出结果
	if index != -1 {
		fmt.Printf("找到了值 %d 在索引 %d 的位置。\n", val, index)
	} else {
		fmt.Println("没有找到指定的值。")
	}
}

// @title: 斐波拉契数列-递归方法
func TestFibonacciRecursion(t *testing.T) {
	// 计算斐波那契数列的第10项
	n := 10
	fibNumber := fun.FibonacciRecursion(n)
	fmt.Printf("斐波那契数列的第%d项是:%d\n", n, fibNumber)

	// 输出前10项斐波那契数列
	fmt.Println("前10项斐波那契数列:")
	for i := 0; i < 10; i++ {
		fmt.Printf("%d ", fun.FibonacciRecursion(i))
	}
	fmt.Println()
}

// @title: 斐波拉契数列-迭代法
func TestFibonacciFind(t *testing.T) {
	// 计算斐波那契数列的第10项
	n := 10
	fibNumber := fun.FibonacciFind(n)
	fmt.Printf("斐波那契数列的第%d项是:%d\n", n, fibNumber)

	// 输出前10项斐波那契数列
	fmt.Println("前10项斐波那契数列:")
	for i := 0; i < 10; i++ {
		fmt.Printf("%d ", fun.FibonacciFind(i))
	}
	fmt.Println()
}

// @title: 雪花算法
func TestSnowflake(t *testing.T) {
	worker, _ := fun.Snowflake(10)
	id := worker.GetId()
	fmt.Println(id)
}

// @title: 快速排序
func TestQuickSort(t *testing.T) {
	nums := []int{10, 5, 2, 3, 7, 6, 8, 1, 9, 4}
	fun.QuickSort(nums, 0, len(nums)-1)
	fmt.Println(nums)
}

// @title: 冒泡排序
func TestBubbleSort(t *testing.T) {
	nums := []int{10, 5, 2, 3, 7, 6, 8, 1, 9, 4}
	fun.BubbleSort(nums)
	fmt.Println(nums)
}

// @title: 洗牌算法
func TestShuffle(t *testing.T) {
	nums := []int{10, 5, 2, 3, 7, 6, 8, 1, 9, 4}
	fun.Shuffle(nums)
	fmt.Println(nums)
}

bool

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: 变量是否布尔类型
func TestIsBool(t *testing.T) {
	v := true
	//v := "技术狼"
	is := fun.IsBool(v)
	fmt.Println(is) // true
}

byte

package test

import (
	"bytes"
	"encoding/binary"
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: []byte转float32
func TestBytesToFloat32(t *testing.T) {
	f := float32(3.14)   // 直接定义一个 float32 值
	var buf bytes.Buffer // 使用 bytes.Buffer 来创建一个可写入的字节缓冲区

	// 将 float32 写入缓冲区
	err := binary.Write(&buf, binary.LittleEndian, f)
	if err != nil {
		fmt.Println("Error writing to buffer:", err)
		return
	}
	byteData := buf.Bytes() // 现在 buf.Bytes() 包含了 float32 的字节表示

	//
	data := fun.BytesToFloat32(byteData)
	fmt.Println(data)
}

// @title: []byte转float64
func TestBytesToFloat64(t *testing.T) {
	f := float64(3.14)   // 直接定义一个 float32 值
	var buf bytes.Buffer // 使用 bytes.Buffer 来创建一个可写入的字节缓冲区

	// 将 float64 写入缓冲区
	err := binary.Write(&buf, binary.LittleEndian, f)
	if err != nil {
		fmt.Println("Error writing to buffer:", err)
		return
	}
	byteData := buf.Bytes() // 现在 buf.Bytes() 包含了 float32 的字节表示

	//
	data := fun.BytesToFloat64(byteData)
	fmt.Println(data)
}

// @title: 将字节切片转换为字符串
func TestUnsafeBytesToString(t *testing.T) {
	byteSlice := []byte("技术狼(jishulang.com)")
	resultString := fun.UnsafeBytesToString(byteSlice)
	fmt.Println(resultString) // 输出: 技术狼(jishulang.com)
}

// @title: []byte转io.Reader
func TestBytesToIoReader(t *testing.T) {
	data := []byte("技术狼(jishulang.com)")

	// 使用 BytesToIoReader 函数将字节切片转换为 io.Reader
	reader := fun.BytesToIoReader(data)

	// 从 reader 中读取数据
	buf := make([]byte, len(data))
	_, err := reader.Read(buf)
	if err != nil {
		panic(err)
	}

	// 打印读取到的数据
	fmt.Println(string(buf))
}

// @title: base32加密
func TestBase32Encode(t *testing.T) {
	// 定义一个字节切片
	originalBytes := []byte("技术狼(jishulang.com)")

	// 使用 Base32Encode 函数编码字节切片
	encodedString := fun.Base32Encode(originalBytes)

	// 打印编码后的 base32 字符串
	fmt.Println("Encoded String:", encodedString)
}

// @title: base32解密
func TestBase32Decode(t *testing.T) {
	originalBytes := []byte("技术狼(jishulang.com)")
	encodedString := fun.Base32Encode(originalBytes)

	//
	decodeString, err := fun.Base32Decode(encodedString)
	fmt.Println(string(decodeString), err)
}

crypto

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: Md5加密
func TestMd5(t *testing.T) {
	is := fun.Md5("技术狼")
	fmt.Println(is)
}

// @title: sha1加密
func TestSha1(t *testing.T) {
	is := fun.Sha1("技术狼")
	fmt.Println(is)
}

// @title: Sha256加密
func TestSha256(t *testing.T) {
	is := fun.Sha256("技术狼")
	fmt.Println(is)
}

// @title: Sha512加密
func TestSha512(t *testing.T) {
	is := fun.Sha512("技术狼")
	fmt.Println(is)
}

// @title: CBC(密码分组链接模式)
func TestCBC(t *testing.T) {
	// 这里使用一个固定的key和IV只是为了演示,实际应用中应该使用更安全的方式生成它们
	key := []byte("xxxxxxxxxxxxxxxx") // 必须是16, 24, 或32字节长
	//iv := key[:aes.BlockSize]                     // 使用key的一部分作为IV,但实际中应随机生成

	plaintext := []byte("技术狼")

	// 加密数据
	encrypted, err := fun.AesEncryptCBC(plaintext, key)
	fmt.Println("Encrypted:", encrypted, err)

	// 解密数据
	decrypted, err := fun.AesDecryptCBC(encrypted, key)
	fmt.Println("Decrypted:", string(decrypted), err)
}

// @title: CFB(密码反馈模式)
func TestCFB(t *testing.T) {
	// 这里使用一个固定的key和IV只是为了演示,实际应用中应该使用更安全的方式生成它们
	key := []byte("xxxxxxxxxxxxxxxx") // 必须是16, 24, 或32字节长
	//iv := key[:aes.BlockSize]                     // 使用key的一部分作为IV,但实际中应随机生成

	plaintext := []byte("技术狼")

	// 加密数据
	encrypted, err := fun.AesEncryptCFB(plaintext, key)
	fmt.Println("Encrypted:", encrypted, err)

	// 解密数据
	decrypted, err := fun.AesDecryptCFB(encrypted, key)
	fmt.Println("Decrypted:", string(decrypted), err)
}

// @title: ECB(电码本模式)
func TestECB(t *testing.T) {
	// 这里使用一个固定的key和IV只是为了演示,实际应用中应该使用更安全的方式生成它们
	key := []byte("xxxxxxxxxxxxxxxx") // 必须是16, 24, 或32字节长
	//iv := key[:aes.BlockSize]                     // 使用key的一部分作为IV,但实际中应随机生成

	plaintext := []byte("技术狼")

	// 加密数据
	encrypted, err := fun.AesEncryptECB(plaintext, key)
	fmt.Println("Encrypted:", encrypted, err)

	// 解密数据
	decrypted, err := fun.AesDecryptECB(encrypted, key)
	fmt.Println("Decrypted:", string(decrypted), err)
}

dir

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: 目录是否存在
func TestDirIsExist(t *testing.T) {
	is, err := fun.DirIsExist("../test")
	fmt.Println(is, err)
}

// @title: 创建目录
func TestDirCreate(t *testing.T) {
	err := fun.DirCreate("../test2", 0777)
	fmt.Println(err)
}

// @title: 目录复制
func TestDirCopy(t *testing.T) {
	err := fun.DirCopy("../test", "../test2")
	fmt.Println(err)
}

// @title: 目录路径以斜杠结尾
func TestDirEndsWithSlash(t *testing.T) {
	err := fun.DirEndsWithSlash("E:\\jishulangcom\\go-fun")
	fmt.Println(err)
}

// @title: 获取某目录指定后缀的所有文件
func TestDirFilesBySuffix(t *testing.T) {
	arr, err := fun.DirFilesBySuffix("./", ".go")
	fmt.Println(arr, err)
}

// @title: 列出指定目录的所有文件及目录
func TestListDirFiles(t *testing.T) {
	arr, err := fun.ListDirFiles("./")
	fmt.Println(arr, err)
}

json

package test

import (
	"fmt"
	"gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: json转map
func TestJsonToMap(t *testing.T) {
	jsonStr := `{"name":"技术狼", "site":"jishulang.com"}`
	jsonBytes := []byte(jsonStr)
	resultMap, err := fun.JsonToMap(jsonBytes)
	fmt.Println(resultMap, err)
}

// @title: map转json
func TestMapToJson(t *testing.T) {
	jsonStr := `{"name":"技术狼", "site":"jishulang.com"}`
	jsonBytes := []byte(jsonStr)
	resultMap, _ := fun.JsonToMap(jsonBytes)

	str := fun.MapToJson(resultMap)
	fmt.Println(str)
}

file

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: 文件是否存在
func TestFileIsExist(t *testing.T) {
	is, err := fun.FileIsExist("./file_test.go")
	fmt.Println(is, err)
}

// @title: 文件复制
func TestFileCopy(t *testing.T) {
	err := fun.FileCopy("./file_test.go", "./file_test2.go")
	fmt.Println(err)
}

// @title: 获取文件内容
func TestFileGetContents(t *testing.T) {
	b, err := fun.FileGetContents("./file_test.go")
	fmt.Println(string(b), err)
}

// @title: 文件写入内容
func TestFilePutContents(t *testing.T) {
	err := fun.FilePutContents("./file_test.txt", "技术狼")
	fmt.Println(err)
}

// @title: 文件隐藏(windows)
func TestFileHide(t *testing.T) {
	is, err := fun.FileHide("./file_test.txt")
	fmt.Println(is, err)
}

float

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: 变量是否浮点类型
func TestIsFloat(t *testing.T) {
	is := fun.IsFloat(3.14)
	fmt.Println(is)
}

// @title: float64转string
func TestFloat64ToStr(t *testing.T) {
	is := fun.Float64ToStr(3.14)
	fmt.Println(is)
}

// @title: float64小数位数
func TestFloat64Decimal(t *testing.T) {
	is := fun.Float64Decimal(3.14)
	fmt.Println(is)
}

// @title: float32转byte
func TestFloat32ToByte(t *testing.T) {
	is := fun.Float32ToByte(3.14)
	fmt.Println(is)
}

// @title: float64转byte
func TestFloat64ToByte(t *testing.T) {
	is := fun.Float64ToByte(3.14)
	fmt.Println(is)
}

// @title: float64转int64
func TestFloat64ToInt64(t *testing.T) {
	data := fun.Float64ToInt64(3.14)
	fmt.Println(data)

	data2 := fun.Float64ToInt64(3.54)
	fmt.Println(data2)
}

// @title: float64转int
func TestFloat64ToInt(t *testing.T) {
	data := fun.Float64ToInt(3.14)
	fmt.Println(data)

	data2 := fun.Float64ToInt(3.54)
	fmt.Println(data2)
}

// @title: float32转int64
func TestFloat32ToInt64(t *testing.T) {
	data := fun.Float32ToInt64(3.14)
	fmt.Println(data)

	data2 := fun.Float32ToInt64(3.54)
	fmt.Println(data2)
}

// @title: float32转int
func TestFloat32ToInt(t *testing.T) {
	data := fun.Float32ToInt(3.14)
	fmt.Println(data)

	data2 := fun.Float32ToInt(3.54)
	fmt.Println(data2)
}

go

package test

import (
	fun "gitee.com/jishulangcom/go-fun"
	"log"
	"testing"
)

type JslStruct struct{}

func (y JslStruct) Fun1(i int, str string) (int, string) {
	return i, str
}

// 魔法函数
func TestCallFun(t *testing.T) {
	// 调用某结构体的方法
	data := JslStruct{}
	i, str := data.Fun1(10, "test")
	log.Println(i, str)

	// 使用魔法函数调用某结构体的方法
	res2 := fun.CallFun(JslStruct{}, "Fun1", 20, "test2")
	log.Println(res2[0], res2[1])
}

int

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: int转字符
func TestIntToStr(t *testing.T) {
	is := fun.IntToStr(100)
	fmt.Println(is)
}

// @title: int64转string
func TestInt64ToStr(t *testing.T) {
	is := fun.Int64ToStr(100)
	fmt.Println(is)
}

// @title: int64转int
func TestInt64ToInt(t *testing.T) {
	is := fun.Int64ToInt(100)
	fmt.Println(is)
}

// @title: int转int64
func TestIntToInt64(t *testing.T) {
	is := fun.IntToInt64(100)
	fmt.Println(is)
}

// @title: int转float64
func TestIntToFloat64(t *testing.T) {
	is := fun.IntToFloat64(100)
	fmt.Println(is)
}

// @title: 判断Int是否是奇数
func TestIntIsOdd(t *testing.T) {
	is := fun.IntIsOdd(101)
	fmt.Println(is)
}

// @title: 判断Int是否是偶数
func TestIntIsEven(t *testing.T) {
	is := fun.IntIsEven(100)
	fmt.Println(is)
}

// @title: 判断Int64是否是奇数
func TestInt64IsOdd(t *testing.T) {
	is := fun.Int64IsOdd(101)
	fmt.Println(is)
}

// @title: 判断Int64是否是偶数
func TestInt64IsEven(t *testing.T) {
	is := fun.Int64IsEven(100)
	fmt.Println(is)
}

// @title: 是否是int相关类型
func TestIsInt(t *testing.T) {
	is := fun.IsInt(100)
	fmt.Println(is)
}

// @title: 是否是int类型
func TestIsNumeric(t *testing.T) {
	is := fun.IsNumeric(100)
	fmt.Println(is)
}

interface

package test

import (
	"encoding/json"
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: Interface转换string
func TestInterfaceToStr(t *testing.T) {
	var val string
	var err error

	fmt.Println("======nil=======")
	val, err = fun.InterfaceToStr(nil)
	fmt.Println(val, err)

	fmt.Println("======浮点=======")
	val, err = fun.InterfaceToStr(1.111111)
	fmt.Println(val, err)
	val, err = fun.InterfaceToStr("1.111111")
	fmt.Println(val, err)

	fmt.Println("======浮点(科学计数)=======")
	val, err = fun.InterfaceToStr(1.111111e+06)
	fmt.Println(val, err)
	val, err = fun.InterfaceToStr("1.1111111111111112e+02")
	fmt.Println(val, err)
	val, err = fun.InterfaceToStr("11111111111111111111111111111111.2e+02")
	fmt.Println(val, err)

	fmt.Println("======布尔=======")
	val, err = fun.InterfaceToStr(true)
	fmt.Println(val, err)

	fmt.Println("======字符串=======")
	val, err = fun.InterfaceToStr("技术狼")
	fmt.Println(val, err)

	fmt.Println("======指针=======")
	var i int64 = 100
	val, err = fun.InterfaceToStr(&i)
	fmt.Println(val, err)

	fmt.Println("======json.Number=======")
	val, err = fun.InterfaceToStr(json.Number("200"))
	fmt.Println(val, err)

	fmt.Println("======[]byte=======")
	val, err = fun.InterfaceToStr([]byte("jishulang.com"))
	fmt.Println(val, err)

}

// @title: Interface转float64
func TestInterfaceToFloat64(t *testing.T) {
	var val float64
	var err error

	fmt.Println("======nil=======")
	val, err = fun.InterfaceToFloat64(nil)
	fmt.Println(val, err)

	fmt.Println("======浮点=======")
	val, err = fun.InterfaceToFloat64(1.111111)
	fmt.Println(val, err)
	val, err = fun.InterfaceToFloat64("1.111111")
	fmt.Println(val, err)

	fmt.Println("======浮点(科学计数)=======")
	val, err = fun.InterfaceToFloat64(1.111111e+06)
	fmt.Println(val, err)
	val, err = fun.InterfaceToFloat64("1.111111e+06")
	fmt.Println(val, err)

	fmt.Println("======布尔=======")
	val, err = fun.InterfaceToFloat64(true)
	fmt.Println(val, err)

	fmt.Println("======字符串=======")
	val, err = fun.InterfaceToFloat64("技术狼")
	fmt.Println(val, err)

	fmt.Println("======指针=======")
	var i int64 = 100
	val, err = fun.InterfaceToFloat64(&i)
	fmt.Println(val, err)

	fmt.Println("======json.Number=======")
	val, err = fun.InterfaceToFloat64(json.Number("200.1"))
	fmt.Println(val, err)

	fmt.Println("======[]byte=======")
	val, err = fun.InterfaceToFloat64([]byte("300.1"))
	fmt.Println(val, err)
}

// @title: Interface转int64
func TestInterfaceToInt64(t *testing.T) {
	var val int64
	var err error

	fmt.Println("======nil=======")
	val, err = fun.InterfaceToInt64(nil)
	fmt.Println(val, err)

	fmt.Println("======浮点=======")
	val, err = fun.InterfaceToInt64(1.111111)
	fmt.Println(val, err)
	val, err = fun.InterfaceToInt64("1.111111")
	fmt.Println(val, err)

	fmt.Println("======浮点(科学计数)=======")
	val, err = fun.InterfaceToInt64(1.111111e+06)
	fmt.Println(val, err)
	val, err = fun.InterfaceToInt64("1.111111e+06")
	fmt.Println(val, err)

	fmt.Println("======布尔=======")
	val, err = fun.InterfaceToInt64(true)
	fmt.Println(val, err)

	fmt.Println("======字符串=======")
	val, err = fun.InterfaceToInt64("技术狼")
	fmt.Println(val, err)

	fmt.Println("======指针=======")
	var i int64 = 100
	val, err = fun.InterfaceToInt64(&i)
	fmt.Println(val, err)

	fmt.Println("======json.Number=======")
	val, err = fun.InterfaceToInt64(json.Number("200"))
	fmt.Println(val, err)

	fmt.Println("======[]byte=======")
	val, err = fun.InterfaceToInt64([]byte("300"))
	fmt.Println(val, err)
}

// @title: Interface是否是结构体
func TestInterfaceIsStruct(t *testing.T) {
	var is bool

	type User struct {
		Name string `json:"name"`
	}
	is = fun.InterfaceIsStruct(User{})
	fmt.Println(is)
}

// @title: Interface是否是指针
func TestIInterfaceIsPtr(t *testing.T) {
	var is bool

	var str string
	is = fun.InterfaceIsPtr(&str)
	fmt.Println(is)
}

io

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"os"
	"testing"
)

// @title: io.Reader转[]byte
func TestIoReaderToBytes(t *testing.T) {
	// Open a file
	file, err := os.Open("io_test.go")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	// Read the file content into a byte slice
	content := fun.IoReaderToBytes(file)

	// Print the content
	fmt.Println("File Content:")
	fmt.Println(string(content))
}

json


rsa

package test

import (
	"encoding/json"
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// Transaction Submit KEY(自家站点)
var transactionSubmitPrivateKey = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBALu4z/1kcTys46RTSBgS1Ie+f+AJZXPHpFObXw/UsdCFxHng26ilRvTAGwptb14RunxinOPB1ALhwAPGBZBi/EQB9azhxsdNQquWqfgCNgMd87wLA+YFRwid/EQitJJJgpc3K8PhRh/stHQfxFnALPTarh0aeE4HL0gtP1WG92c3AgMBAAECgYEAnBFcqlhVZJKAd9/dclZFZ83TVpm5RPbYAcKM2AaHBswPuxxcwusWAOmuEY9GJbkrh7ocoaZF81doYjrB6XbCLwE5ZO5wC/awuzlChIUEYbuKHYaHklOIRXZdVB5F1VWNuigm9+Bp1Z1tgMPJ3XuPh8vcLsBjYzoW/n52KZjWX/ECQQD2vi8IJvOoq3VTMguBsX1C/WuIP7i6jS8p794SyYj7OlZ5lCDj38/YxSGbTL/1sOQ2hTPqfPjnOWbkIRfA/8srAkEAwsPElz/V3dVYQJDm4B4aOTbA5RJWHcSyvCzme3J50V+f1n+NYT5A7vsfuwD/EtOg4JUAK2oKEJYJx4qDIJAeJQJBAJsDjp6rggakeVgkJ7B6Jnzwox79EXw5+Lh7FuRsst9KnktRcXxX/sdryZo8lJixYh6SfrRBgUoa+PY3iCnbSfMCQQCY9oXcwB7olZk1RFh/JkU0MCN5BVirEoPJtH3j8DlqTe7L2OuhtvHqf0IhbZvnHlyYZY13i1WSRzQxCkEH/wgdAkB8T84E5yKQ4n0PoigggVrCv3SekwZMOxtka5/KfH9ioJOq7XQZN5nZHxX5xIFmngiowOiAIJ/Hpnv72/Oi3Ns+"
var transactionSubmitPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7uM/9ZHE8rOOkU0gYEtSHvn/gCWVzx6RTm18P1LHQhcR54NuopUb0wBsKbW9eEbp8YpzjwdQC4cADxgWQYvxEAfWs4cbHTUKrlqn4AjYDHfO8CwPmBUcInfxEIrSSSYKXNyvD4UYf7LR0H8RZwCz02q4dGnhOBy9ILT9VhvdnNwIDAQAB"

// Transaction Notification KEY(pay平台)
var transactionNotificationPrivateKey = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBALu4z/1kcTys46RTSBgS1Ie+f+AJZXPHpFObXw/UsdCFxHng26ilRvTAGwptb14RunxinOPB1ALhwAPGBZBi/EQB9azhxsdNQquWqfgCNgMd87wLA+YFRwid/EQitJJJgpc3K8PhRh/stHQfxFnALPTarh0aeE4HL0gtP1WG92c3AgMBAAECgYEAnBFcqlhVZJKAd9/dclZFZ83TVpm5RPbYAcKM2AaHBswPuxxcwusWAOmuEY9GJbkrh7ocoaZF81doYjrB6XbCLwE5ZO5wC/awuzlChIUEYbuKHYaHklOIRXZdVB5F1VWNuigm9+Bp1Z1tgMPJ3XuPh8vcLsBjYzoW/n52KZjWX/ECQQD2vi8IJvOoq3VTMguBsX1C/WuIP7i6jS8p794SyYj7OlZ5lCDj38/YxSGbTL/1sOQ2hTPqfPjnOWbkIRfA/8srAkEAwsPElz/V3dVYQJDm4B4aOTbA5RJWHcSyvCzme3J50V+f1n+NYT5A7vsfuwD/EtOg4JUAK2oKEJYJx4qDIJAeJQJBAJsDjp6rggakeVgkJ7B6Jnzwox79EXw5+Lh7FuRsst9KnktRcXxX/sdryZo8lJixYh6SfrRBgUoa+PY3iCnbSfMCQQCY9oXcwB7olZk1RFh/JkU0MCN5BVirEoPJtH3j8DlqTe7L2OuhtvHqf0IhbZvnHlyYZY13i1WSRzQxCkEH/wgdAkB8T84E5yKQ4n0PoigggVrCv3SekwZMOxtka5/KfH9ioJOq7XQZN5nZHxX5xIFmngiowOiAIJ/Hpnv72/Oi3Ns+"
var transactionNotificationPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7uM/9ZHE8rOOkU0gYEtSHvn/gCWVzx6RTm18P1LHQhcR54NuopUb0wBsKbW9eEbp8YpzjwdQC4cADxgWQYvxEAfWs4cbHTUKrlqn4AjYDHfO8CwPmBUcInfxEIrSSSYKXNyvD4UYf7LR0H8RZwCz02q4dGnhOBy9ILT9VhvdnNwIDAQAB"

type transactionSubmitDto struct {
	Currency string `json:"currency"`
	Amount   string `json:"amount"`
	Sign     string `json:"sign"`
}

type transactionNotificationDto struct {
	Id     int64  `json:"id"`
	Amount string `json:"amount"`
	Sign   string `json:"sign"`
}

// @title: Rsa Sha1 签名验证
func TestRsaSha1(t *testing.T) {
	//Rsa Sha1 签名(模拟取得Notification数据)
	originalData, _ := rsaSha1Sign(transactionNotificationPrivateKey)
	originalDataByte, _ := json.Marshal(originalData)
	fmt.Println("originalData json:", string(originalDataByte))

	//Rsa Sha1 签名验证
	rsaData := transactionNotificationDto{}
	json.Unmarshal(originalDataByte, &rsaData)
	delete(originalData, "sign")
	signatureStr := fun.SortingSplicing(originalData)
	ok, err := fun.RsaSha1Verify(signatureStr, rsaData.Sign, transactionNotificationPublicKey)
	if err != nil {
		fmt.Println("RsaSha1Verify err:", err)
		return
	}
	fmt.Println(ok)
}

func rsaSha1Sign(privateKey string) (map[string]interface{}, error) {
	data := make(map[string]interface{})
	data["amount"] = "100"

	origData := fun.SortingSplicing(data)
	signStr, err := fun.RsaSha1Sign(origData, privateKey)
	if err != nil {
		return nil, err
	}
	data["sign"] = string(signStr)

	return data, err
}

slice

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: 是否是切片
func TestIsSlice(t *testing.T) {
	arr := []int{1, 2, 3, 4}
	v := fun.IsSlice(arr)
	fmt.Println(v)
}

// @title: 是否是数组
func TestIsArray(t *testing.T) {
	arr := []int{1, 2, 3, 4}
	v := fun.IsArray(arr)
	fmt.Println(v)

	arr2 := [...]int{1, 2, 3, 4}
	v2 := fun.IsArray(arr2)
	fmt.Println(v2)

	arr3 := [4]int{1, 2, 3, 4}
	v3 := fun.IsArray(arr3)
	fmt.Println(v3)
}

// @title: 是否是切片
func TestImplode(t *testing.T) {
	arr := []int{1, 2, 3, 4}
	v := fun.Implode(",", arr)
	fmt.Println(v)
}

string

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: 生成N个随机字符
func TestRandString(t *testing.T) {
	str := fun.RandString(10)
	fmt.Println(str) // lIETOH7p1x
}

// @title: 是否手机号
func TestIsMobile(t *testing.T) {
	var is bool

	// 移动
	arr1 := []int{134, 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 182, 187, 188, 198, 178}

	// 联通
	arr2 := []int{130, 131, 132, 145, 155, 156, 166, 171, 175, 176, 185, 186}

	// 电信
	arr3 := []int{133, 149, 153, 173, 177, 180, 181, 189, 191, 199}

	// 合并
	arr := append(arr1, arr2...)
	arr = append(arr, arr3...)

	for _, m := range arr {
		mobile := fmt.Sprintf("%d00000000", m)
		is = fun.IsMobile(mobile)
		fmt.Println(mobile, is)
	}
}

// @title: 手机号*号处理
func TestMobileStar(t *testing.T) {
	mobile := fun.MobileStar("13600000001")
	fmt.Println(mobile) // 136****01
}

// @title: 是否邮箱
func TestIsEmail(t *testing.T) {
	email := fun.IsEmail("[email protected]")
	fmt.Println(email) // true
}

// @title: string转int
func TestStrToInt(t *testing.T) {
	var i int
	var err error

	i, err = fun.StrToInt("123456")
	fmt.Println(i, err) // 123456 <nil>

	i, err = fun.StrToInt("1.23456")
	fmt.Println(i, err) // 0 strconv.Atoi: parsing "1.23456": invalid syntax
}

// @title: string转int64
func TestStrToInt64(t *testing.T) {
	var i int64
	var err error

	i, err = fun.StrToInt64("123456")
	fmt.Println(i, err) // 123456 <nil>

	i, err = fun.StrToInt64("1.23456")
	fmt.Println(i, err) // 0 strconv.Atoi: parsing "1.23456": invalid syntax
}

// @title: string转uint64
func TestStrToUint64(t *testing.T) {
	var i uint64
	var err error

	i, err = fun.StrToUint64("123456")
	fmt.Println(i, err) // 123456 <nil>

	i, err = fun.StrToUint64("1.23456")
	fmt.Println(i, err) // 0 strconv.Atoi: parsing "1.23456": invalid syntax
}

// @title: string转Float64
func TestStrToFloat64(t *testing.T) {
	i, err := fun.StrToFloat64("123456.789")
	fmt.Println(i, err) // 123456 <nil>
}

// @title: string转*big.Float
func TestStrToBigFloat(t *testing.T) {
	i, err := fun.StrToBigFloat("123456.789")
	fmt.Println(i, err) // 123456 <nil>
}

// @title: string转*big.Int
func TestStrToBigInt(t *testing.T) {
	bigInt, ok := fun.StrToBigInt("0.123", 3)
	fmt.Println(bigInt.String(), ok) // 123 true
}

// @title: 某字符串是否存在数组中
func TestStrIsInArr(t *testing.T) {
	arr := []string{"技术狼(jishulang.com)", "jishulang.com"}
	is := fun.StrIsInArr("技术狼(jishulang.com)", arr)
	fmt.Println(is)
}

// @title: string是否是浮点
func TestStrIsFloat(t *testing.T) {
	is := fun.StrIsFloat("0.123")
	fmt.Println(is)
}

// @title: string是否是浮点
func TestIsInString(t *testing.T) {
	is := fun.IsInString("技术狼", "技术狼(jishulang.com)")
	fmt.Println(is)
}

// @title: 是否是字符类型
func TestIsString(t *testing.T) {
	is := fun.IsString("技术狼")
	fmt.Println(is)
}

// @title: 字符串打散为数组
func TestExplode(t *testing.T) {
	m := fun.Explode(",", "jishulang.com,jishulang.net,jishulang.cn")
	fmt.Println(m)
}

// @title: 获取字符串中字符的数量
func TestMbStrLen(t *testing.T) {
	var l int
	l = fun.MbStrLen("技术狼(jishulang.com)")
	fmt.Println(l)

	// 获取字节数(一个中文字符在UTF-8中通常占用3个字节)
	l = len("技术狼(jishulang.com)")
	fmt.Println(l)
}

// @title: 字符串首字母转成小写
func TestLcfirst(t *testing.T) {
	l := fun.Lcfirst("JISHULANG.COM")
	fmt.Println(l)
}

// @title: 字符串首字母转成小写
func TestUcfirst(t *testing.T) {
	l := fun.Ucfirst("jishulang.com")
	fmt.Println(l)
}

// @title: 字符串全转大写
func TestStrToUpper(t *testing.T) {
	l := fun.StrToUpper("jishulang.COM")
	fmt.Println(l)
}

// @title: 字符串全转小写
func TestStrToLower(t *testing.T) {
	l := fun.StrToLower("jishulang.COM")
	fmt.Println(l)
}

// @title: 字符串全转小写
func TestUcword(t *testing.T) {
	l := fun.Ucword("jishulang.com jishulang.cn jishulang.net")
	fmt.Println(l)
}

// @title: 移除字符串两侧的字符
func TestTrim(t *testing.T) {
	l := fun.Trim("====技术狼==jishulang.com==", "=")
	fmt.Println(l)
}

// @title: 去除全部空格
func TestTrimAll(t *testing.T) {
	l := fun.TrimAll("  技术狼 jishulang.com   ")
	fmt.Println(l)
}

// @title: 移除字符串左侧的字符
func TestLtrim(t *testing.T) {
	str := fun.Ltrim("技术狼jishulang.com, 技术狼jishulang.cn", "技术狼")
	fmt.Println(str)
}

// @title: 移除字符串右侧的字符
func TestRtrim(t *testing.T) {
	var str string
	str = fun.Rtrim("技术狼jishulang.com, 技术狼jishulang", "jishulang")
	fmt.Println(str) // 技术狼jishulang.com, 技术狼

	str = fun.Rtrim("技术狼jishulang.com, 技术狼jishulang.com", "jishulang")
	fmt.Println(str) // 技术狼jishulang.com, 技术狼jishulang.com

	str = fun.Rtrim("技术狼jishulang.com, 技术狼jishulang.jjj", "jishulang")
	fmt.Println(str) // 技术狼jishulang.com, 技术狼jishulang.

	str = fun.Rtrim("技术狼jishulang.com, 技术狼jishulang.oooo", "jishulang")
	fmt.Println(str) // 技术狼jishulang.com, 技术狼jishulang.oooo
}

// @title: 移除字符串左侧的字符
func TestOrd(t *testing.T) {
	str := fun.Ord("jishulang.com")
	fmt.Println(str)
}

// @title: 传ASCII值返回字符
func TestChr(t *testing.T) {
	str := fun.Chr(106)
	fmt.Println(str)
}

// @title: 传ASCII值返回字符
func TestStrRepeat(t *testing.T) {
	str := fun.StrRepeat("技术狼", 3)
	fmt.Println(str)
}

// @title: 字符替换
func TestStrReplace(t *testing.T) {
	str := fun.StrReplace("技术狼jishulang.com", "jishulang.com", "jishulang.cn")
	fmt.Println(str)
}

// @title: 是否是科学计数
func TestIsScientificNotation(t *testing.T) {
	str := fun.IsScientificNotation("4.843671275939215e+21")
	fmt.Println(str)
}

// @title: 科学计数转换为字符串数字
func TestScientificNotationToStrings(t *testing.T) {
	str := "4.843000e+2"
	decimalStr, _ := fun.ScientificNotationToStrings(str, 5)
	decimalStr = fun.RemoveAllZerosFromLastDecimal(decimalStr) // 移除无效的0
	fmt.Println(decimalStr)
}

// @title: 获取小数点后的位数
func TestCountDecimalPlaces(t *testing.T) {
	//str := "4.843000e+2"
	str := "4.843000"
	//str := "技术狼.com"
	//str := "100"
	i := fun.CountDecimalPlaces(str)
	fmt.Println(i)
}

// @title: 保留n位小数
func TestRetainDecimalPlaces(t *testing.T) {
	str := "4.843000"
	amount, err := fun.RetainDecimalPlaces(str, 2)
	fmt.Println(amount, err)
}

// @title: 金额精度
func TestAmountDecimal(t *testing.T) {
	//str := "1.3345345354e+3" // 科学计数
	//str := "1334.5345354354788" // 小数位截取
	str := "1334.5300000000" // 去除无效的0
	decimalStr := fun.AmountDecimal(str, 5)
	fmt.Println(decimalStr)
}

// @title: 移出小数点后无效的数
func TestRemoveAllZerosFromLastDecimal(t *testing.T) {
	str := "4.843000"
	amount := fun.RemoveAllZerosFromLastDecimal(str)
	fmt.Println(amount)
}

struct

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: 结构体转换为数组
func TestStructToArr(t *testing.T) {
	type User struct {
		Name string `json:"name" yaml:"name" xml:"name"`
		Sex  int    `json:"sex"`
	}
	str := fun.StructToArr(User{})
	fmt.Println(str)
}

time

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
	"time"
)

// @title: Rfc3339格式时间转为正常时间
func TestRfc3339ToDatetime(t *testing.T) {
	val := "2018-01-14T21:45:54+08:00"
	str := fun.Rfc3339ToDatetime(val)
	fmt.Println(str)
}

// @title: 标准时间转为时间戳
func TestDatetimeToTimestamp(t *testing.T) {
	val := "2018-01-14 21:45:54"
	str := fun.DatetimeToTimestamp(val)
	fmt.Println(str)
}

// @title: 标准时间转化为时间戳
func TestTimestampToDatetime(t *testing.T) {
	str := fun.TimestampToDatetime(1515937554)
	fmt.Println(str)
}

// @title: 获取当前标准时间
func TestCurrentDateTime(t *testing.T) {
	str := fun.CurrentDateTime()
	fmt.Println(str)
}

// @title: 获取当前时间戳(秒)
func TestTimeStampSecond(t *testing.T) {
	data := fun.TimeStampSecond()
	fmt.Println(data)
}

// @title: 获取当前时间戳(毫秒)
func TestMillisecond(t *testing.T) {
	data := fun.Millisecond()
	fmt.Println(data)
}

// @title: 一个字符串时间与当前时间的时间差
func TestDateTimeStrAadNowSub(t *testing.T) {
	data, err := fun.DateTimeStrAadNowSub("2022-05-22 23:59:59")
	fmt.Println(data, err)
}

// @title: 时间戳转数字格式日期字符
func TestTimestampToDate(t *testing.T) {
	str := fun.TimestampToDate(time.Now().Unix(), time.UTC)
	fmt.Println(str) // 2023-04-04
}

// @title: 时间戳转数字格式日期字符
func TestTimestampToDateNumber(t *testing.T) {
	str := fun.TimestampToDateNumber(time.Now().Unix(), fun.LocAsiaShanghai())
	fmt.Println(str) // 20230404
}

// @title: 时间戳转数字格式日期字符
func TestLocAsiaShanghai(t *testing.T) {
	data := fun.LocAsiaShanghai()
	fmt.Println(data)
}

// @title: 时间戳转数字格式日期字符
func TestLocUTC(t *testing.T) {
	data := fun.LocUTC()
	fmt.Println(data)
}

// @title: 时间戳转数字格式日期字符
func TestLocAmericaLosAngeles(t *testing.T) {
	data := fun.LocAmericaLosAngeles()
	fmt.Println(data)
}

// @title: 获取某个时间起,N天内的连续的数字格式日期
func TestGetSometimeApartNDaysTimes(t *testing.T) {
	list := fun.GetSometimeApartNDaysTimes(time.Now().UTC(), +1, 7, true)
	fmt.Println(list)
}

// @title: 获取某个时间起,N天内的连续的时间(指定日期格式)
func TestGetSometimeApartNDaysTimesFormat(t *testing.T) {
	list := fun.GetSometimeApartNDaysTimesFormat(time.Now().UTC(), +1, 7, true, "2006-01-02")
	fmt.Println(list)
}

// @title: 获取某个时间起,第N天内的时间(指定日期格式)
func TestGetSometimeApartNDaysTimeFormat(t *testing.T) {
	date := fun.GetSometimeApartNDaysTimeFormat(time.Now().UTC(), +1, "2006-01-02")
	fmt.Println(date) // 明天日期
}

web

package test

import (
	"fmt"
	fun "gitee.com/jishulangcom/go-fun"
	"testing"
)

// @title: 获取URL主域名
func TestUrlDomain(t *testing.T) {
	str := fun.UrlDomain("https://www.jishulang.com/index.html?source=gofun")
	fmt.Println(str)
}

// @title: 获取服务器端IP
func TestServeIp(t *testing.T) {
	str := fun.ServeIp()
	fmt.Println(str)
}

Documentation

Overview

// @title: 查找算法 // @auth: 技术狼(jishulang.com)

【包名:】雪花算法 【作者:】技术狼

【包名:】排序算法 【作者:】技术狼

// @title: 布尔相关函数
// @auth: 技术狼(jishulang.com)

// @title: 加密 // @auth: 技术狼(jishulang.com)

【包名:】浮点相关函数 【作者:】技术狼

【包名:】int相关函数 【作者:】技术狼

// @title: io // @auth: 技术狼(jishulang.com)

// @title: 签名 // @auth: 技术狼(jishulang.com)

【包名:】数组相关函数 【作者:】技术狼

// @title: 字符串相关函数 // @auth: 技术狼(jishulang.com)

【包名:】xml相关函数
【作者:】技术狼

Index

Constants

View Source
const (
	COLOR_BLACK = iota + 30
	COLOR_RED
	COLOR_GREEN
	COLOR_YELLOW
	COLOR_BLUE
	COLOR_MAGENTA
	COLOR_CYAN
	COLOR_WHITE
)
View Source
const ORIGIN_TIME = "2006-01-02 15:04:05" //go原始时间

Variables

This section is empty.

Functions

func AesDecryptCBC

func AesDecryptCBC(encrypted []byte, key []byte) (decrypted []byte, err error)

func AesDecryptCFB

func AesDecryptCFB(encrypted []byte, key []byte) (decrypted []byte, err error)

func AesDecryptECB

func AesDecryptECB(encrypted []byte, key []byte) (decrypted []byte, err error)

func AesEncryptCBC

func AesEncryptCBC(origData []byte, key []byte) (encrypted []byte, err error)

=================== CBC(密码分组链接模式) ======================

func AesEncryptCFB

func AesEncryptCFB(origData []byte, key []byte) (encrypted []byte, err error)

=================== CFB(密码反馈模式) ======================

func AesEncryptECB

func AesEncryptECB(origData []byte, key []byte) (encrypted []byte, err error)

=================== ECB(电码本模式) ======================

func AmountDecimal

func AmountDecimal(amount string, maxDecimals uint) string

@title: 金额精度 @param: amount(金额。如:4.8436712000000) @param: maxDecimals(小数位数) @return: string @description: @date: 2024/6/11 22:35

func Base32Decode

func Base32Decode(s string) ([]byte, error)

@title: base32解密 @param: []byte @return: []byte, error @description: @date: 2024/6/11 22:32

func Base32Encode

func Base32Encode(src []byte) string

@title: base32加密 @param: []byte @return: string @description: @date: 2024/6/11 22:32

func BinarySearch

func BinarySearch(nums []int, val int) int

@title: 二分查找法 @param: nums:数组 @return: int @description: 二分查找的基础是先做排序,然后做二分查找 @date: 2024/6/11 22:32

func BubbleSort

func BubbleSort(nums []int)

@title: 冒泡排序 @param: nums:数组 @return: @description: @date: 2024/6/11 22:32

func BytesToFloat32

func BytesToFloat32(bytes []byte) float32

@title: []byte转float32 @param: []byte @return: float32 @description: @date: 2024/6/11 22:32

func BytesToFloat64

func BytesToFloat64(bytes []byte) float64

@title: []byte转float64 @param: []byte @return: float64 @description: @date: 2024/6/11 22:32

func BytesToIoReader

func BytesToIoReader(b []byte) io.Reader

@title: []byte转io.Reader @param: []byte @return: io.Reader @description: 接受一个字节切片 []byte 并将其转换为 io.Reader @date: 2024/6/11 22:32

func CallFun

func CallFun(obj interface{}, funName string, args ...interface{}) []reflect.Value

// @title: 魔法函数(调用某结构体的方法) // @param: obj(结构体对象) // @param: funName(方法名) // @param: args(方法中要传的N个参数) // @return: // @description: 是一个通用函数,用于反射性地调用任何对象上的方法。 // @date: 2022/7/3 21:40

func Chr

func Chr(ascii int32) string

@title: 传ASCII值返回字符 @param: ASCII值(int32) @return: 字符(string) @description: @date: 2024/7/16 19:15

func Color added in v0.0.4

func Color(msg string, conf, bg, text int) string

获取文本颜色

func ColorBlack added in v0.0.4

func ColorBlack(msg string) string

黑色

func ColorBlue added in v0.0.4

func ColorBlue(msg string) string

蓝色

func ColorCyan added in v0.0.4

func ColorCyan(msg string) string

青色

func ColorGreen added in v0.0.4

func ColorGreen(msg string) string

绿色

func ColorMagenta added in v0.0.4

func ColorMagenta(msg string) string

洋红色

func ColorRed added in v0.0.4

func ColorRed(msg string) string

红色

func ColorWhite added in v0.0.4

func ColorWhite(msg string) string

白色

func ColorYellow added in v0.0.4

func ColorYellow(msg string) string

黄色

func Copy

func Copy(src interface{}) interface{}

【名称:】深拷贝 【参数:】 【返回:】 【备注:】

func CountDecimalPlaces

func CountDecimalPlaces(val string) int

@title: 获取小数点后的位数 @param: str @return: int @description:(非浮点值、科学计数返回0) @date: 2024/6/11 22:32

func CurrentDateTime

func CurrentDateTime() string

@title: 获取当前标准时间 @param: @return: 标准时间(string) @description: 时间格式:2021-12-30 23:14:07 @date: 2024/6/11 22:32

func DateTimeStrAadNowSub

func DateTimeStrAadNowSub(ts string) (time.Duration, error)

@title: 一个字符串时间与当前时间的时间差 @param: 字符串时间(string) 如:2022-05-22 23:59:59 @return: time.Duration,error @description: 东八时区 @date: 2024/6/11 22:32

func DatetimeToTimestamp

func DatetimeToTimestamp(str string) int64

@title: 标准时间转为时间戳 @param: 标准时间(string) @return: 时间戳(秒)(int64) @description: 如 2018-01-14 21:45:54 转为 1515937554 @date: 2024/6/11 22:32

func DirCopy

func DirCopy(srcPath string, destPath string) error

@title: 目录复制 @param: 拷贝路径(string),目标路径 @return: error @description: @date: 2024/6/11 22:32

func DirCreate

func DirCreate(dirPath string, perm os.FileMode) error

@title: 创建目录 @param: 目录路径(string),权限(os.FileMode) @return: error @description: @date: 2024/6/11 22:32

func DirEndsWithSlash

func DirEndsWithSlash(dirPath string) string

@title: 目录路径斜杠校正并以斜杠结尾 @param: 路径(string) @return: 路径(string) @description: @date: 2024/6/11 22:32

func DirIsExist

func DirIsExist(dirPath string) (bool, error)

@title: 目录是否存在 @param: 路径(string) @return: 布尔, error @description: @date: 2024/6/11 22:32

func Explode

func Explode(separator, str string) []string

@title: 字符串打散为数组 @param: 分割字符串(string),要分割的字符串(string) @return: 数组(map[int]string) @description: @date: 2024/7/16 19:15

func FibonacciFind

func FibonacciFind(n int) int

@title: 斐波拉契数列-迭代法 @param: n:想要计算的斐波那契数列中的第 n 个数 @return: int @description: 找出第n位数是什么,时间复杂度是n方 @date: 2024/6/11 22:32

func FibonacciRecursion

func FibonacciRecursion(n int) int

@title: 斐波拉契数列-递归方法 @param: n:想要计算的斐波那契数列中的第 n 个数 @return: int @description: 找出第n位数是什么,时间复杂度是n方 @date: 2024/6/11 22:32

func FileCopy

func FileCopy(srcPath, destPath string) error

@title: 文件复制 @param: 文件路径(string)、目标路径(string) @return: error @description: @date: 2024/6/11 22:32

func FileGetContents

func FileGetContents(filePath string) ([]byte, error)

@title: 获取文件内容 @param: 路径(string) @return: 文件流([]byte), error @description: @date: 2024/6/11 22:32

func FileIsExist

func FileIsExist(filePath string) (bool, error)

@title: 文件是否存在 @param: 文件路径(string) @return: 布尔 @description: @date: 2024/6/11 22:32

func FilePutContents

func FilePutContents(filePath string, content string) error

@title: 文件写入内容 @param: 路径(string),内容(string) @return: error @description: @date: 2024/6/11 22:32

func Float32ToByte

func Float32ToByte(float32 float32) []byte

@title: float32转byte @param: float32 @return: []byte @description: @date: 2024/6/11 22:32

func Float32ToInt

func Float32ToInt(float32 float32) int

@title: float32转int @param: float32 @return: int @description: @date: 2024/6/11 22:32

func Float32ToInt64

func Float32ToInt64(float32 float32) int64

@title: float32转int64 @param: float32 @return: int64 @description: @date: 2024/6/11 22:32

func Float64Decimal

func Float64Decimal(f float64) int

@title: float64小数位数 @param: float64 @return: int @description: @date: 2024/6/11 22:32

func Float64ToByte

func Float64ToByte(float64 float64) []byte

@title: float64转byte @param: float64 @return: []byte @description: @date: 2024/6/11 22:32

func Float64ToInt

func Float64ToInt(f float64) int

@title: float64转int @param: float64 @return: int @description: @date: 2024/6/11 22:32

func Float64ToInt64

func Float64ToInt64(f float64) int64

@title: float64转int64 @param: float64 @return: int64 @description: @date: 2024/6/11 22:32

func Float64ToStr

func Float64ToStr(f float64) string

@title: float64转string @param: float @return: string @description: @date: 2024/6/11 22:32

func GetEnv

func GetEnv(key string) (string, bool)

【名称:】获取环境变量值 【参数:】 【返回:】 【备注:】

func GetImportPackagePath

func GetImportPackagePath(packagePath string, version string) string

【名称:】获取导入包的绝对路径 【参数:】包路由(string),版本号 【返回:】包的绝对地址 【备注:】

func GetSometimeApartNDaysTimeFormat

func GetSometimeApartNDaysTimeFormat(t time.Time, days int, format string) string

@title: 获取某个时间起,第N天内的时间(指定日期格式) @param: t:某个时间 @param: days:相隔N天 @param: format:日期格式(如:2006-01-02 15:04:05) @return: string @description: 可以用来获取明天、昨天日期 @date: 2024/6/11 22:32

func GetSometimeApartNDaysTimes

func GetSometimeApartNDaysTimes(t time.Time, days int, dayN int, SameDay bool) []time.Time

@title: 获取某个时间起,N天内的连续的数字格式日期 @param: t:某个时间 @param: days:相隔N天 @param: dayN:取多少天 @param: SameDay:当天是否在内 @return: []time.Time @description: 返回格式如 [20240718 20240719 20240720 20240721 20240722 20240723 20240724] @date: 2024/6/11 22:32

func GetSometimeApartNDaysTimesFormat

func GetSometimeApartNDaysTimesFormat(t time.Time, days int, dayN int, SameDay bool, format string) []string

@title: 获取某个时间起,N天内的连续的时间(指定日期格式) @param: t:某个时间 @param: days:相隔N天 @param: dayN:取多少天 @param: SameDay:当天是否在内 @param: format:日期格式(如:2006-01-02 15:04:05) @return: []time.Time @description: @date: 2024/6/11 22:32

func GetType

func GetType(variable interface{}) string

【名称:】获取变量类型 【参数:】变量(interface) 【返回:】类型名(string) 【备注:】

func Implode

func Implode(separator string, arr interface{}) string

@title: 数组分割为字符串 @param: 分割符(string),数组([]interface) @return: 字符串(string) @description: 参数arr必须为字符串类型的一维数组 @date: 2024/6/11 22:32

func Int64IsEven

func Int64IsEven(i int64) bool

@title: 判断Int64是否是偶数 @param: int64 @return: bool @description: @date: 2024/6/11 22:32

func Int64IsOdd

func Int64IsOdd(num int64) bool

@title: 判断Int64是否是奇数 @param: int64 @return: bool @description: @date: 2024/6/11 22:32

func Int64ToInt

func Int64ToInt(i int64) int

@title: int64转int @param: int64 @return: int @description: @date: 2024/6/11 22:32

func Int64ToStr

func Int64ToStr(i int64) string

@title: int64转string @param: int64 @return: string @description: @date: 2024/6/11 22:32

func IntIsEven

func IntIsEven(i int) bool

@title: 判断Int是否是偶数 @param: int @return: bool @description: @date: 2024/6/11 22:32

func IntIsOdd

func IntIsOdd(i int) bool

@title: 判断Int是否是奇数 @param: int @return: bool @description: @date: 2024/6/11 22:32

func IntToFloat64

func IntToFloat64(i int) float64

@title: int转float64 @param: int @return: float64 @description: @date: 2024/6/11 22:32

func IntToInt64

func IntToInt64(i int) int64

@title: int转int64 @param: int @return: int64 @description: @date: 2024/6/11 22:32

func IntToStr

func IntToStr(i int) string

@title: int转字符 @param: int @return: string @description: @date: 2024/6/11 22:32

func InterfaceIsPtr

func InterfaceIsPtr(val interface{}) bool

@title: Interface是否是指针 @param: interface @return: bool @description: @date: 2024/7/7 16:45

func InterfaceIsStruct

func InterfaceIsStruct(val interface{}) bool

@title: Interface是否是结构体 @param: interface @return: bool @description: @date: 2024/7/7 16:45

func InterfaceToFloat64

func InterfaceToFloat64(val interface{}) (float64, error)

@title: Interface转换float64 @param: val(interface) @return: float64, error @description: @date: 2022/7/3 21:40

func InterfaceToInt64

func InterfaceToInt64(val interface{}) (int64, error)

@title: Interface转int64 @param: val(interface) @return: int64, error @description: @date: 2022/7/3 21:40

func InterfaceToStr

func InterfaceToStr(val interface{}) (string, error)

@title: Interface转换string @param: val(interface) @return: string @description: @date: 2022/7/3 21:40

func IoReader

func IoReader(b []byte) io.Reader

@title: 获取io.Reader @param: @return: *bytes.Buffer @description: @date: 2022/7/3 21:40

func IoReaderToBytes

func IoReaderToBytes(reader io.Reader) []byte

@title: io.Reader转[]byte @param: io.Reader @return: []byte @description: @date: 2022/7/3 21:40

func IoWriter

func IoWriter() *bytes.Buffer

@title: 获取io.Writer @param: @return: *bytes.Buffer @description: @date: 2022/7/3 21:40

func IsArray

func IsArray(val interface{}) bool

@title: 是否是数组 @param: interface @return: true/false(bool) @description: @date: 2024/6/11 22:32

func IsBool

func IsBool(variable interface{}) bool

@title: 变量是否布尔类型 @param: 变量(interface) @return: true/false(bool) @description: @date: 2022/7/3 21:40

func IsEmail

func IsEmail(email string) bool

@title: 是否邮箱 @param: 邮箱(string) @return: true/false(bool) @description: @date: 2022/7/3 21:16

func IsFloat

func IsFloat(variable interface{}) bool

@title: 变量是否浮点类型 @param: 变量(interface) @return: true/false(bool) @description: @date: 2024/6/11 22:32

func IsInString

func IsInString(target string, strs string) bool

@title: 某字符是否存在字符串中 @param: 某字符(string),字符串(string) @return: bool @description: @date: 2024/7/16 19:15

func IsInt

func IsInt(variable interface{}) bool

@title: 是否是int相关类型 @param: interface @return: bool @description: @date: 2024/6/11 22:32

func IsMobile

func IsMobile(mobile string) bool

@title: 是否手机号 @param: 手机号(string) @return: true/false(bool) @description: @date: 2022/7/3 21:10

func IsNumeric

func IsNumeric(variable interface{}) bool

@title: 是否是数字类型 @param: interface @return: bool @description: @date: 2024/6/11 22:32

func IsScientificNotation

func IsScientificNotation(s string) bool

@title: 是否是科学计数 @param: str(科学计数。如:"4.843671275939215e+21") @return: bool @description: @date: 2024/6/11 22:30

func IsSlice

func IsSlice(val interface{}) bool

@title: 是否是切片 @param: interface @return: true/false(bool) @description: @date: 2024/6/11 22:32

func IsString

func IsString(val interface{}) bool

@title: 是否是字符类型 @param: @return: bool @description: @date: 2024/7/16 19:15

func JsonToMap

func JsonToMap(b []byte) (map[string]interface{}, error)

@title: json转map @param: b([]byte) @return: map[string]interface{} @return: error @description: 解决JSON格式的数据反序列化为map[string]interface{}时,数字变成科学计数法表示的浮点数问题 @date: 2024/7/7 17:00

func Lcfirst

func Lcfirst(str string) string

@title: 字符串首字母转成小写 @param: 字符串(string) @return: 字符串(string) @description: @date: 2024/7/16 19:15

func ListDirFiles

func ListDirFiles(dirPath string) ([]string, error)

@title: 列出指定目录的所有文件及目录 @param: dirPath(目录路径) @return: []string @return: error @description: @date: 2024/7/7 17:00

func LocAmericaLosAngeles

func LocAmericaLosAngeles() *time.Location

@title: 获取时区-西八区(洛杉矶) @param: @return: *time.Location @description: @date: 2024/6/11 22:32

func LocAsiaShanghai

func LocAsiaShanghai() *time.Location

@title: 获取时区-东八区(中国上海) @param: @return: *time.Location @description: @date: 2024/6/11 22:32

func LocUTC

func LocUTC() *time.Location

@title: 获取时区-0时区 @param: @return: *time.Location @description: @date: 2024/6/11 22:32

func Ltrim

func Ltrim(str, charlist string) string

@title: 移除字符串左侧的字符 @param: 字符串(string),要移除的字符(string) @return: 字符串(string) @description: @date: 2024/7/16 19:15

func MapToJson

func MapToJson(param map[string]interface{}) string

@title: map转json @param: map[string]interface{} @return: string @return: error @description: 解决JSON格式的数据反序列化为map[string]interface{}时,数字变成科学计数法表示的浮点数问题 @date: 2024/7/7 17:00

func MbStrLen

func MbStrLen(str string) int

@title: 获取字符串中字符的数量 @param: 字符串(string) @return: 数量(int) @description: @date: 2024/7/16 19:15

func Md5

func Md5(src string) string

@title: Md5加密 @param: string @return: string @description: @date: 2024/6/11 22:32

func Millisecond

func Millisecond() int64

@title: 获取时间戳(毫秒) @param: @return: 时间戳(int64) @description: @date: 2024/6/11 22:32

func MobileStar

func MobileStar(mobile string) string

@title: 手机号*号处理 @param: 手机号(string) @return: 加*号的手机号(string) @description: 非手机号则直接返回原字符 @date: 2022/7/3 21:13

func Ord

func Ord(str string) int

@title: 返回字符串中第一个字符的 ASCII 值 @param: 字符串(string) @return: ASCII值(int) @description: @date: 2024/7/16 19:15

func QuickSort

func QuickSort(nums []int, left, right int)

@title: 快速排序 @param: nums:数组 @return: @description: left 和 right 的边界条件,如果 left 大于等于 right,则无需排序。 @date: 2024/6/11 22:32

func RandString

func RandString(n int) string

@title: 生成N个随机字符 @param: 个数(int) @return: 字符串(string) @description: a-z,A-Z,0-9 @date: 2022/7/3 21:07

func RemoveAllZerosFromLastDecimal

func RemoveAllZerosFromLastDecimal(amount string) string

@title: 移出小数点后无效的数 @param: amount(金额。如:4.8436712000000) @return: string @description: @date: 2024/6/1 10:21

func RetainDecimalPlaces

func RetainDecimalPlaces(amount string, precision uint) (string, error)

@title: 保留n位小数 @param: amount 金额 @param: precision 要保留多少位小数 @return: int @description: @date: 2024/6/11 22:34

func Rfc3339ToDatetime

func Rfc3339ToDatetime(str string) string

@title: Rfc3339格式时间转为正常时间 @param: Rfc3339时间字符(string) @return: 时间字符串(string) @description: 如 2018-01-14T21:45:54+08:00 转为 2018-01-14 21:45:54 @date: 2024/6/11 22:32

func RsaSha1Sign

func RsaSha1Sign(originalData string, RsaPrivateKey string) (sign []byte, err error)

func RsaSha1Verify

func RsaSha1Verify(signatureStr, signStr, RsaPublickey string) (bool, error)

*RSA验签

  • $originalData待签名数据(需要先排序,然后拼接)
  • $sign需要验签的签名,需要base64_decode解码
  • 验签用支付公钥
  • return 验签是否通过 bool值

func Rtrim

func Rtrim(str, substr string) string

@title: 移除字符串右侧的字符 @param: 字符串(string),要移除的字符(string) @return: 字符串(string) @description: @date: 2024/7/16 19:15

func ScientificNotationToStrings

func ScientificNotationToStrings(val string, decimalPlaces uint) (string, error)

@title: 将科学计数转换为字符串数字 @param: val(科学计数。如:4.843671275939215e+21) @param: decimalPlaces(精度,小数点位数) @return: string, error @description: @date: 2024/6/1 10:21

func ServeIp

func ServeIp() (ip string)

@title: 获取服务器端IP @param: @return: string @description: @date: 2024/6/11 22:32

func SetEnv

func SetEnv(key string, val string) error

【名称:】设置环境变量值 【参数:】 【返回:】 【备注:】

func Sha1

func Sha1(str string) string

@title: sha1加密 @param: string @return: string @description: @date: 2024/6/11 22:32

func Sha256

func Sha256(str string) string

@title: Sha256加密 @param: string @return: string @description: @date: 2024/6/11 22:32

func Sha512

func Sha512(src string) string

@title: Sha512加密 @param: string @return: string @description: @date: 2024/6/11 22:32

func Shuffle

func Shuffle(arr []int)

@title: 洗牌算法 @param: nums:数组 @return: @description: @date: 2024/6/11 22:32

func Snowflake

func Snowflake(workerId int64) (*snowflakeWorker, error)

@title: 创建雪花算法节点 @param: int64 @return: *snowflakeWorker, error @description: @date: 2024/6/11 22:32

func SortingSplicing

func SortingSplicing(params map[string]interface{}) string

对签名数据排序、拼接

func StrIsFloat

func StrIsFloat(val string) bool

@title: string是否是浮点 @param: 字符串(str) @return: bool @description: @date: 2024/7/16 19:15

func StrIsInArr

func StrIsInArr(target string, str_array []string) bool

@title: 某字符串是否存在数组中 @param: 字符(string),数组(array) @return: 布尔(bool) @description: @date: 2022/7/3 21:33

func StrRepeat

func StrRepeat(input string, multiplier int) string

@title: 指定字符串重复N次 @param: 字符串(string),次数(int) @return: 字符(string) @description: @date: 2024/7/16 19:15

func StrReplace

func StrReplace(strs string, oldStr string, newStr string) string

@title: 字符替换 @param: 要替换的字符串(string),旧字符(string),新字符(string) @return: string @description: @date: 2022/7/4 22:14

func StrToBigFloat

func StrToBigFloat(str string) (*big.Float, bool)

@title: string转*big.Float @param: 字符串(str) @return: *big.Float, bool @description: @date: 2022/7/3 21:31

func StrToBigInt

func StrToBigInt(str string, exp int64) (*big.Int, bool)

@title: string转*big.Int @param: (字符)string,(精度位)int64 @return: *big.Int, bool @description: @auth: 技术狼 @date: 2022/7/3 21:00

func StrToFloat64

func StrToFloat64(val string) (float64, error)

@title: string转Float64 @param: 字符串(str) @return: float64, error @description: @date: 2022/7/3 21:29

func StrToInt

func StrToInt(val string) (int, error)

@title: string转int @param: 字符串(str) @return: int, error @description: @date: 2022/7/3 21:18

func StrToInt64

func StrToInt64(val string) (int64, error)

@title: string转int64 @param: 字符串(str) @return: int64,error @description: @date: 2022/7/3 21:25

func StrToLower

func StrToLower(str string) string

@title: 字符串全转小写 @param: 字符串(string) @return: 字符串(string) @description: @date: 2024/7/16 19:15

func StrToUint64

func StrToUint64(val string) (uint64, error)

@title: string转uint64 @param: 字符串(str) @return: uint64,error @description: @date: 2022/7/3 21:28

func StrToUpper

func StrToUpper(str string) string

@title: 字符串全转大写 @param: 字符串(string) @return: 字符串(string) @description: @date: 2024/7/16 19:15

func StructToArr

func StructToArr(data interface{}) []map[string]interface{}

func TimeStampSecond

func TimeStampSecond() int64

@title: 获取当前时间戳(秒) @param: @return: 时间戳(int64) @description: @date: 2024/6/11 22:32

func TimestampToDate

func TimestampToDate(timestamp int64, loc *time.Location) string

@title: 时间戳转日期 @param: int64,*time.Location @return: string @description: 输出日期格式(2006-01-02) @date: 2024/6/11 22:32

func TimestampToDateNumber

func TimestampToDateNumber(timestamp int64, loc *time.Location) string

@title: 时间戳转数字格式日期字符 @param: int64,*time.Location @return: string @description: 输出日期格式(20060102) @date: 2024/6/11 22:32

func TimestampToDatetime

func TimestampToDatetime(timestamp int64) string

@title: 时间戳转为标准时间 @param: 时间戳(int64) @return: 标准时间(string) @description: 如 1515937554 转为 2018-01-14 21:45:54 @date: 2024/6/11 22:32

func Trim

func Trim(str, charlist string) string

@title: 移除字符串两侧的字符 @param: 字符串(string),要移除的字符(string) @return: 字符串(string) @description: @date: 2024/7/16 19:15

func TrimAll

func TrimAll(str string) string

@title: 去除全部空格 @param: 字符串(string) @return: 字符串(string) @description: @date: 2024/7/16 19:15

func Ucfirst

func Ucfirst(str string) string

@title: 字符串首字母转成大写 @param: 字符串(string) @return: 字符串(string) @description: @date: 2024/7/16 19:15

func Ucword

func Ucword(str string) string

@title: 每个单词的首字符转换为大写 @param: 字符串(string) @return: 字符串(string) @description: @date: 2024/7/16 19:15

func UnsafeBytesToString

func UnsafeBytesToString(bytes []byte) string

@title: 将字节切片转换为字符串 @param: []byte @return: string @description: 不安全的[]byte转string @date: 2024/6/11 22:32

func UrlDomain

func UrlDomain(link string) string

@title: 获取URL主域名 @param: string @return: string @description: @date: 2024/6/11 22:32

Types

type FileInfo

type FileInfo struct {
	Name    string    `json:"name"`     // 文件名
	Suffix  string    `json:"suffix"`   // 后缀
	Path    string    `json:"path"`     // 文件路径
	Size    int64     `json:"size"`     // 文件大小
	ModTime time.Time `json:"mod_time"` // 修改时间
}

func DirFilesBySuffix

func DirFilesBySuffix(dir string, suffix string) ([]FileInfo, error)

@title: 获取某目录指定后缀的所有文件 @param: 目录路径(string),后缀(string) @return: 文件信息数组,错误信息 @description: @date: 2024/6/11 22:32

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳