common

package
v0.0.6 Latest Latest
Warning

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

Go to latest
Published: Jun 21, 2024 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ICON_INFO    = NotifyIcon("information")
	ICON_ERROR   = NotifyIcon("error")
	ICON_WARNING = NotifyIcon("warning")
)
View Source
const TimeFormat = "2006-01-02 15:04:05"

Variables

View Source
var (
	IsWindows = runtime.GOOS == "windows"
	IsLinux   = runtime.GOOS == "linux"
	IsMac     = runtime.GOOS == "darwin"
)
View Source
var HttpTimeout = 0

设置超时时间 注意:超时包括连接时间、任何重定向和读取响应正文。 设置为0,则不设置

View Source
var (

	// 创建一个新的时区(定义北京时间相对于 UTC 的偏移量)
	TIMEZONE = time.FixedZone("Asia/Shanghai", 8*60*60)
)

const TIMEZONE *time.Location

Functions

func ArgsToConfigMap

func ArgsToConfigMap(args ...string) map[string]string

ArgsToConfigMap 将参数数组解析成map 只有-key=value会被解析,如:-s=123

func ArrayInsertArrayStr

func ArrayInsertArrayStr(arr []string, els ...string) []string

ArrayInsertArrayStr 向数组arr前排插入元素。 如果向后最近请直接使用 append(slice []Type, elems ...Type)

func ArrayNewArrayInt

func ArrayNewArrayInt(arr []int, values ...int) []int

ArrayNewArrayInt 变长数组,多次重复使用的话有点消耗性能

func ArrayNewArrayStr

func ArrayNewArrayStr(arr []string, values ...string) []string

ArrayNewArrayStr 变长数组,多次重复使用的话有点消耗性能

func ArrayNewInt

func ArrayNewInt(array ...int) []int

func ArrayNewStr

func ArrayNewStr(array ...string) []string

func ArrayPrintln

func ArrayPrintln(values ...string)

func ArrayRemoveArrayStr

func ArrayRemoveArrayStr(arr []string, removeIndex int) []string

ArrayRemoveArrayStr 变长数组,多次重复使用的话有点消耗性能

func Boolean

func Boolean(b string) bool

Boolean 如果表示true或1的字符,都返回true,反之false

func BooleanOf

func BooleanOf(b string) bool

BooleanOf 仅表示true的字符,返回true,反之false

func ByteParse

func ByteParse(v string) int8

int8:带符号的8位整数,取值范围从 -128 到 127。

func CRC32

func CRC32(str string) int

func CRC32Hash

func CRC32Hash(bytes []byte) uint32

func CRC32_

func CRC32_(bytes []byte) int

func CheckSum

func CheckSum(data []byte) uint16

func CmdDirRun

func CmdDirRun(dir string, commandName string, params ...string) string

func CmdGenerateBecomeSilentString

func CmdGenerateBecomeSilentString(fileApp string, arg string) string

生成静默启动的执行命令(带PowerShell.exe)

func CmdOnlyRun

func CmdOnlyRun(commandName string, params ...string) error

func CmdRun

func CmdRun(commandName string, params ...string) string

执行命令并返回结果

参数 commandName 执行者,如:PowerShell.exe

参数 params 不定参数

return 返回预期的值即为成功

see http://www.ay1.cc/article/26215.html

func CmdRunByBat

func CmdRunByBat(commandLine string) string

CmdRunByBat 通过生成bat文件执行命令,然后删掉。(一些特殊系统命令无法直接调用)

func CmdRunLine

func CmdRunLine(commandLine string)

执行命令并返回结果

参数 commandLine 一行可执行命令,如:PowerShell.exe xxx

return 返回预期的值即为成功

func CmdStartApp

func CmdStartApp(becomeSilent bool, cmdArray ...string) error

启动其他程序

参数:becomeSilent 静默启动标识

参数:cmdArray 程序及其命令,第一个取程序

func CmdStartAppLine

func CmdStartAppLine(becomeSilent bool, cmd string) error

启动其他程序

参数:becomeSilent 静默启动标识

参数:cmdArray 程序及其命令,第一个取程序

func CmdWrapPathString

func CmdWrapPathString(arg string) string

目标程序或参数有空格或者?时,则需要用单引号包裹,如:arg=>'arg'

func CmdWrapPathStrings

func CmdWrapPathStrings(args ...string) []string

目标程序或参数有空格,则需要用单引号包裹,如:arg=>'arg'

func ConfigMapReadFile

func ConfigMapReadFile(fileConfig string) map[string]string

func ConfigMapWriteFile

func ConfigMapWriteFile(configMap map[string]string, fileConfig string)

func Debounce

func Debounce(delay time.Duration, fn func()) func()

Debounce 防抖函数

func EnvIsDev

func EnvIsDev() bool

func FileCopy

func FileCopy(srcFile string, destFile string) bool

func FileCreateDirs

func FileCreateDirs(path string) bool

func FileDelete

func FileDelete(file string) bool

FileDelete 删除文件,可能会抛出异常 不能中断的地方建议用err :=recover()接收抛出的异常

defer func() {
		if err := recover(); err != nil {
			fmt.Println("occur error")
			fmt.Println(err)
		}
}()

func FileDirsReadyForWriteFile

func FileDirsReadyForWriteFile(file string) bool

FileDirsReadyForWriteFile 提前向准备写入的文件目录做准备 true表示存在已经准备就绪

func FileExists

func FileExists(path string) bool

FileExists 判断所给路径文件/文件夹是否存在 true存在

func FileFindOnlyResource added in v0.0.4

func FileFindOnlyResource(root string, names ...string) string

根据跟路径分别拼接资源文件目录名,如果存在则返回目录路径,不存在返回第一个目录路径

func FileFindOnlyResourceName added in v0.0.4

func FileFindOnlyResourceName(root string, names ...string) string

根据跟路径分别拼接资源文件目录名,如果存在则返回,不存在返回第一个名字

func FileFindOnlyResourcePath added in v0.0.4

func FileFindOnlyResourcePath(paths ...string) string

根据提供的绝对路径寻找存在的资源目录,如果存在则返回目录路径,不存在返回第一个目录路径

func FileGetAPPLocal

func FileGetAPPLocal() string

FileGetAPPLocal 获取用户的本地应用数据目录,如C:\Users\zhangsan\AppData\Local

func FileGetChildren

func FileGetChildren(file string) []string

FileGetChildren 获取该目录下文件和目录

func FileGetCurrentDir

func FileGetCurrentDir() string

FileGetCurrentDir 获取当前目录

func FileGetCurrentFilePath

func FileGetCurrentFilePath() string

FileGetCurrentFilePath 获取exe执行文件路径(最终方案-全兼容)包含后缀

func FileGetDirs

func FileGetDirs(file string) []string

// FileGetFiles 获取该目录下的目录

func FileGetExecDir

func FileGetExecDir() string

FileGetExecDir 获取执行时的当前目录

func FileGetExecFile

func FileGetExecFile() string

func FileGetFilename

func FileGetFilename(file string) string

FileGetFilename 获取文件名(带后缀的)

func FileGetFiles

func FileGetFiles(file string) []string

FileGetFiles 获取该目录下的文件

func FileGetName

func FileGetName(file string) string

FileGetName 获取文件名(不带后缀)

func FileGetParentDir

func FileGetParentDir(file string) string

FileGetParentDir 获取上级目录

func FileGetSuffix

func FileGetSuffix(file string) string

FileGetSuffix 获取文件后缀(带点的)

func FileGetUserDir

func FileGetUserDir() string

用户主目录的路径(如果有的话)。

func FileIsAbsolutePath

func FileIsAbsolutePath(file string) bool

FileIsAbsolutePath 是否为绝对路径

func FileIsDir

func FileIsDir(path string) bool

FileIsDir 判断所给路径是否为文件夹 false不存在或不是目录

func FileIsFile

func FileIsFile(path string) bool

FileIsFile 判断所给路径是否为文件 false不存在或不是文件

func FileIsFileByFilename

func FileIsFileByFilename(file string) bool

FileIsFileByFilename 根据文件名后缀来判断是否为文件(无法判别无后缀的文件)

func FileOf

func FileOf(filePaths ...string) string

FileOf 整合文件路径

func FilePathSeparator

func FilePathSeparator() string

特定于操作系统的路径列表分隔符

func FileRead

func FileRead(file string) string

func FileReadBytes

func FileReadBytes(file string) []byte

func FileReadBytesIfExists

func FileReadBytesIfExists(defaultValue []byte, filePaths ...string) []byte

func FileRename

func FileRename(oldFile string, newFile string) error

FileRename 文件重命名

func FileSeparator

func FileSeparator() string

特定于操作系统的路径分隔符

func FileSumCheckByCRC32

func FileSumCheckByCRC32(file1, file2 string) bool

FileSumCheckByCRC32 通过CRC32校验两个文本是否一致

func FileWrite

func FileWrite(file string, content string) bool

func FileWriteBytes

func FileWriteBytes(file string, bytes []byte) bool

func FloatParse

func FloatParse(v string) float64

转浮点数

func HttpDownload

func HttpDownload(url string, file string, headers ...string) error

func HttpGet

func HttpGet(url string, headers ...string) (string, error)

func HttpGetToBytes

func HttpGetToBytes(url string, headers ...string) ([]byte, error)

func HttpPost

func HttpPost(url string, data []byte, headers ...string) (string, error)

func InitLog

func InitLog(followExe bool, names ...string)

InitLog 初始化日志设置

followExe 否跟随执行文件,true日志文件在执行文件目录下,false则在用户目录下。

names 可以不设置,多个将会拼接 尽量只是文件名

fatal系列函数会在写入日志信息后调用os.Exit(1)。Panic系列函数会在写入日志信息后panic。

log.Fatalln("fatal系列函数会在写入日志信息后调用os.Exit(1)")

log.Panicln("执行后会自动触发一个异常")

func InstanceOf

func InstanceOf(objectPtr interface{}) string

func IntParse

func IntParse(v string) int

int32:带符号的32位整数,取值范围从 -2,147,483,648 到 2,147,483,647。(由于int在32位系统上通常是32位,在64位系统上通常是64位)

func IsInstanceOf

func IsInstanceOf(objectPtr, typePtr interface{}) bool

IsInstanceOf sample variables

someString :="Some String"
someFloat := float32(2.4)
someStruct1 := SomeStruct1{}
someStruct2 := SomeStruct2{}
someStruct1Ptr := &SomeStruct1{}
// primitive string
fmt.Println("string <-> *string \\t\\t", IsInstanceOf(someString, (*string)(nil)))   //false
fmt.Println("*string <-> *string \\t\\t", IsInstanceOf(&someString, (*string)(nil))) //true
// primitive float32
fmt.Println("float32 <-> *float32 \\t\\t", IsInstanceOf(someFloat, (*float32)(nil)))   //false
fmt.Println("*float32 <-> *float32 \\t\\t", IsInstanceOf(&someFloat, (*float32)(nil))) //true
// structure
fmt.Println("SomeStruct1 <-> *SomeStruct1 \\t", IsInstanceOf(someStruct1, (*SomeStruct1)(nil)))     //false
fmt.Println("*SomeStruct1 <-> *SomeStruct1 \\t", IsInstanceOf(&someStruct1, (*SomeStruct1)(nil)))   //true
fmt.Println("*SomeStruct2 <-> *SomeStruct1 \\t", IsInstanceOf(&someStruct2, (*SomeStruct1)(nil)))   //false
fmt.Println("*SomeStruct1 <-> *SomeStruct1 \\t", IsInstanceOf(someStruct1Ptr, (*SomeStruct1)(nil))) //true

func IsStartUp

func IsStartUp(name string) bool

IsStartUp 根据文件存在判断是否自启动

func IsUrl

func IsUrl(url string) bool

func JsonGetValueByKey

func JsonGetValueByKey(jsonObject JSONObject, key string) interface{}

通过key取值,如:JsonGetValueByKey(response,"data.token")【注意:可能为nil】

func JsonGetValueByKeys

func JsonGetValueByKeys(jsonObject JSONObject, keys ...string) interface{}

通过key取值,如:JsonGetValueByKey(response,"data","token")【注意:可能为nil】

func JsonToString

func JsonToString(object interface{}) string

结构体 序列化为 JSON字符串

func ListToArrayInt

func ListToArrayInt(lst *list.List) []int

func ListToArrayStr

func ListToArrayStr(lst *list.List) []string

func LongParse

func LongParse(v string) int64

int64:带符号的64位整数,取值范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。

func MD5

func MD5(str string) string

func MD5Hash

func MD5Hash(bytes []byte) [16]byte

func MD5_

func MD5_(bytes []byte) string

func Notify

func Notify(title string, content string) bool

func NotifyError

func NotifyError(content string)

func NotifyInfo

func NotifyInfo(content string)

func NotifyMac

func NotifyMac(title, message string) string

func NotifyWinBat

func NotifyWinBat(title, message string, icon NotifyIcon) string

func ParseArgs

func ParseArgs()

func Ping

func Ping(domain string)

func main() {

	ParseArgs()
	args := os.Args

	if len(args) < 2 {
		Usage()
	}
	desIp := args[len(args)-1]
	Ping(desIp)
}

func Ping_

func Ping_(domain string) bool

func RegexContains added in v0.0.3

func RegexContains(str, regex string) bool

是否包含

RegexContains(`\s\s+`, "-w -s") => false 没有连续两个空格

func RegexFind

func RegexFind(text, regex string) string

RegexGet 获取文本匹配的值(第一个值为文本本身,第二个值为第一个括号的匹配值,以此类推)

func RegexGet

func RegexGet(text, regex string) ([]string, error)

RegexGet 获取文本匹配的值(第一个值为文本本身,第二个值为第一个括号的匹配值,以此类推)

func RegexGetFirstMatch

func RegexGetFirstMatch(text, regex string) (string, error)

RegexGetFirstMatch 获取第一个匹配值(不包含文本本身)

func RegexIsMatch

func RegexIsMatch(text, regex string) (bool, error)

RegexIsMatch 是否与文本匹配

func RegexReplace added in v0.0.3

func RegexReplace(str, regex, replace string) string

RegexReplace 替换正则表达式中的部分

RegexReplace("-w -s", `\s`, "@") => -w@-s,将一个空格替换为@

RegexReplace("hi,$张三$! $李四$ 你们好。", `\$([^$]+)\$`, "<$1>") => hi,<张三>! <李四> 你们好。

匹配@开头结尾的如:`\@([^@]+)\@`。<$1>其中的$1代表第一个捕获组的内容

func SHA1

func SHA1(str string) string

func SHA1Hash

func SHA1Hash(bytes []byte) [20]byte

func SHA1_

func SHA1_(bytes []byte) string

func ScheduledTask

func ScheduledTask(time_ time.Time, taskName, taskPath, timeStr string)

ScheduledTask 定时任务

func ScheduledTaskDelete

func ScheduledTaskDelete(taskName string)

ScheduledTaskDelete 删除定时任务

func ShortParse

func ShortParse(v string) int16

int16:带符号的16位整数,取值范围从 -32,768 到 32,767。

func StartMacApp

func StartMacApp(becomeSilent bool, fileApp string, arg string) error

func StartUpBySelf

func StartUpBySelf(on bool, name string)

StartUpBySelf 自启动 实现原理是在LaunchAgents目录下写入启动配置文件配置说明。 win则是在用户启动目录下写入一个bat来启动当前二进制。 https://p00q.cn/?p=707 https://www.fythonfang.com/blog/2021/4/19/mac-launchd-daemons-and-agents-tutorial C:\Users\user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

func StartWinApp

func StartWinApp(becomeSilent bool, fileApp string, arg string) error

启动其他程序

参数:becomeSilent 静默启动标识

参数:fileApp 待启动程序路径+名称

参数:arg 待启动程序传入参数

retrun err!=nil就是成功,其他错误 参考testStartWinApp

https://www.bbsmax.com/A/VGzlk4NYdb/

https://blog.csdn.net/hejingdong123/article/details/101369709

func StrEndsWith

func StrEndsWith(str string, ends string) bool

func StrEqualIgnoreCase

func StrEqualIgnoreCase(str1 string, str2 string) bool

func StrIsEmpty

func StrIsEmpty(obj any) bool

func StrIsNotEmpty

func StrIsNotEmpty(obj any) bool

func StrJoin

func StrJoin(separator string, strs ...string) string

StrJoin 接受任意数量的字符参数,并用指定分隔符连接

func StrJoinObj

func StrJoinObj(separator string, objs ...interface{}) string

StrJoinObj 接受任意数量的interface{}参数,尝试将它们转换为字符串并用指定分隔符连接

func StrRandom

func StrRandom(length int) string

根据长度生成对应长度的随机字符串

func StrSplit

func StrSplit(str, separator string) []string

StrSplit(str,"@") 根据分割符号separator拆分成数组(不包含分割符号separator)

func StrSplitByRegexp

func StrSplitByRegexp(str string, separators string) []string

StrSplitByRegexp(str,"@#*") 根据分割符号【集】separators拆分成数组(不包含分割符号集separators)

func StrStartsWith

func StrStartsWith(str string, starts string) bool

func StrSubstring

func StrSubstring(str string, begin int, end int) string

func StrSubstringBegin

func StrSubstringBegin(str string, begin int) string

func StrSubstringEnd

func StrSubstringEnd(str string, end int) string

func StrToUpperByFirstLetter

func StrToUpperByFirstLetter(s string) string

func StrTrim

func StrTrim(str string) string

func StrUrlDecode

func StrUrlDecode(encodedStr string) string

func StrUrlEncode

func StrUrlEncode(plainText string) string

func TestIntRange

func TestIntRange()

func ThrowException

func ThrowException(errors ...any)

func TimeIntToTime

func TimeIntToTime(seconds int64) time.Time

func TimeIntToTimeString

func TimeIntToTimeString(seconds int64) string

TimeIntToTimeString 2006-01-02 15:04:05

func TimeNow

func TimeNow() time.Time

TimeNow 可能涉及时区问题,强烈建议用此方法

func TimeNowString

func TimeNowString() string

TimeNowString 2006-01-02 15:04:05

func TimePlus

func TimePlus(t time.Time, years, months, days int) time.Time

func TimePlusDay

func TimePlusDay(t time.Time, day int) time.Time

func TimePlusHour

func TimePlusHour(t time.Time, hours int) time.Time

func TimePlusMinute

func TimePlusMinute(t time.Time, minutes int) time.Time

func TimePlusMonth

func TimePlusMonth(t time.Time, months int) time.Time

func TimePlusSecond

func TimePlusSecond(t time.Time, seconds int) time.Time

func TimePlusWeek

func TimePlusWeek(t time.Time, week int) time.Time

func TimePlusYear

func TimePlusYear(t time.Time, years int) time.Time

func TimeSleep

func TimeSleep(millisecond int)

Sleep 1 second = 1000 millisecond

func TimeStringToTime

func TimeStringToTime(t string) time.Time

TimeStringToTime 2006-01-02 15:04:05

func TimeToString

func TimeToString(t time.Time) string

TimeToString 2006-01-02 15:04:05

func TimeToStringFormat

func TimeToStringFormat(t time.Time, format string) string

TimeToStringFormat 可以使用yyyy-MM-dd HH:mm:ss

func ToString

func ToString(obj any) string

将任意对象字符化

func TxtToConfigMap

func TxtToConfigMap(config string) map[string]string

TxtToConfigMap 将config 通过 \n 分成lines 再通过 @= 分成key-value 。#开头将被跳过

func TxtToConfigMapBy added in v0.0.5

func TxtToConfigMapBy(config, firstSplit, secondSplit string) map[string]string

TxtToConfigMapBy 将config 通过 firstSplit 分成lines 再通过 secondSplit 分成 key-value。#开头将被跳过

func Usage

func Usage()

Types

type Debouncer

type Debouncer struct {
	// contains filtered or unexported fields
}

func NewDebouncer

func NewDebouncer(interval time.Duration, fn func()) *Debouncer

func (*Debouncer) Reset

func (d *Debouncer) Reset()

type HeaderPair

type HeaderPair struct {
	Key   string
	Value string
}

type ICMP

type ICMP struct {
	Type        uint8
	Code        uint8
	Checksum    uint16
	Identifier  uint16
	SequenceNum uint16
}

type JSONArray

type JSONArray map[string][]interface{}

type JSONObject

type JSONObject map[string]interface{}

ResponseJSON 是用来存储响应体的通用 JSON 结构体 打印返回的 JSON 响应 fmt.Printf("Response JSON: %+v\n", *response)

func HttpPostJSON

func HttpPostJSON(url string, jsonData interface{}, headers ...string) (JSONObject, error)

func JsonBytesToJson

func JsonBytesToJson(bytes []byte) JSONObject

bytes 反序列化为 结构体

func JsonGetValueToMap

func JsonGetValueToMap(jsonObject JSONObject, keys ...string) (JSONObject, error)

将深度json根据keys扁平化,result, err := common.JsonGetValueToMap(jsonObj, "result.token", "result.authMenu.10.authed")

func JsonGetValueToMap120

func JsonGetValueToMap120(json JSONObject, keys ...string) (JSONObject, error)
	var current interface{} = response
	for i, key := range keys {
		keysSlice := strings.Split(key, ".")
		for _, k := range keysSlice {
			if m, ok := current.(map[string]interface{}); ok {
				current = m[k]
				if current == nil {
					// 当键不存在时,将结果设为空
					results[i] = nil
					break
				}
			} else {
				// 当遇到非映射类型时,后续键无法处理,将结果设为空
				results[i] = nil
				break
			}
		}
		results[i] = current
	}
	return results
}

func JsonStrToJson

func JsonStrToJson(str string) JSONObject

JSON字符串 反序列化为 结构体

type NotifyIcon

type NotifyIcon string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL