github.com/PandaGoAdmin/utils@v0.0.0-20211208134815-d5461603a00f/docs/v0.0.9.md (about) 1 # kgo 2 3 import "github.com/PandaGoAdmin/utils" 4 5 6 ## Usage 7 8 ```go 9 const ( 10 // Version 版本号 11 Version = "0.0.9" 12 13 //UINT_MAX 无符号整型uint最大值 14 UINT_MAX = ^uint(0) 15 //UINT_MIN 无符号整型uint最小值 16 UINT_MIN uint = 0 17 18 //UINT64_MAX 无符号整型uint64最大值, 18446744073709551615 19 UINT64_MAX = ^uint64(0) 20 //UINT64_MIN 无符号整型uint64最小值 21 UINT64_MIN uint64 = 0 22 23 //INT_MAX 有符号整型int最大值 24 INT_MAX = int(^uint(0) >> 1) 25 //INT_MIN 有符号整型int最小值 26 INT_MIN = ^INT_MAX 27 28 //INT64_MAX 有符号整型int64最大值, 9223372036854775807 29 INT64_MAX = int64(^uint(0) >> 1) 30 //INT64_MIN 有符号整型int64最小值, -9223372036854775808 31 INT64_MIN = ^INT64_MAX 32 33 // FILE_COVER_ALLOW 文件覆盖,允许 34 FILE_COVER_ALLOW LkkFileCover = 1 35 // FILE_COVER_IGNORE 文件覆盖,忽略 36 FILE_COVER_IGNORE LkkFileCover = 0 37 // FILE_COVER_DENY 文件覆盖,禁止 38 FILE_COVER_DENY LkkFileCover = -1 39 40 // FILE_TYPE_ANY 文件类型-任意 41 FILE_TYPE_ANY LkkFileType = 0 42 // FILE_TYPE_LINK 文件类型-链接文件 43 FILE_TYPE_LINK LkkFileType = 1 44 // FILE_TYPE_REGULAR 文件类型-常规文件(不包括链接) 45 FILE_TYPE_REGULAR LkkFileType = 2 46 // FILE_TYPE_COMMON 文件类型-普通文件(包括常规和链接) 47 FILE_TYPE_COMMON LkkFileType = 3 48 49 // FILE_TREE_ALL 文件树,查找所有(包括目录和文件) 50 FILE_TREE_ALL LkkFileTree = 3 51 // FILE_TREE_DIR 文件树,仅查找目录 52 FILE_TREE_DIR LkkFileTree = 2 53 // FILE_TREE_FILE 文件树,仅查找文件 54 FILE_TREE_FILE LkkFileTree = 1 55 56 // RAND_STRING_ALPHA 随机字符串类型,字母 57 RAND_STRING_ALPHA LkkRandString = 0 58 // RAND_STRING_NUMERIC 随机字符串类型,数值 59 RAND_STRING_NUMERIC LkkRandString = 1 60 // RAND_STRING_ALPHANUM 随机字符串类型,字母+数值 61 RAND_STRING_ALPHANUM LkkRandString = 2 62 // RAND_STRING_SPECIAL 随机字符串类型,字母+数值+特殊字符 63 RAND_STRING_SPECIAL LkkRandString = 3 64 // RAND_STRING_CHINESE 随机字符串类型,仅中文 65 RAND_STRING_CHINESE LkkRandString = 4 66 67 // CASE_NONE 忽略大小写 68 CASE_NONE LkkCaseSwitch = 0 69 // CASE_LOWER 检查小写 70 CASE_LOWER LkkCaseSwitch = 1 71 // CASE_UPPER 检查大写 72 CASE_UPPER LkkCaseSwitch = 2 73 74 // PAD_LEFT 左侧填充 75 PAD_LEFT LkkPadType = 0 76 // PAD_RIGHT 右侧填充 77 PAD_RIGHT LkkPadType = 1 78 // PAD_BOTH 两侧填充 79 PAD_BOTH LkkPadType = 2 80 81 // PKCS_NONE 不进行填充 82 PKCS_NONE LkkPKCSType = -1 83 // PKCS_ZERO PKCS 0值填充 84 PKCS_ZERO LkkPKCSType = 0 85 // PKCS_SEVEN 即PKCS7 86 PKCS_SEVEN LkkPKCSType = 7 87 88 //默认浮点数精确小数位数 89 FLOAT_DECIMAL = 10 90 91 //AuthCode 动态密钥长度,须<32 92 DYNAMIC_KEY_LEN = 8 93 94 //检查连接超时的时间 95 CHECK_CONNECT_TIMEOUT = time.Second * 5 96 97 // 正则模式-全中文 98 PATTERN_CHINESE_ALL = "^[\u4e00-\u9fa5]+$" 99 100 // 正则模式-中文名称 101 PATTERN_CHINESE_NAME = "^[\u4e00-\u9fa5][.•·\u4e00-\u9fa5]{0,30}[\u4e00-\u9fa5]$" 102 103 // 正则模式-多字节字符 104 PATTERN_MULTIBYTE = "[^\x00-\x7F]" 105 106 // 正则模式-ASCII字符 107 PATTERN_ASCII = "^[\x00-\x7F]+$" 108 109 // 正则模式-全角字符 110 PATTERN_FULLWIDTH = "[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]" 111 112 // 正则模式-半角字符 113 PATTERN_HALFWIDTH = "[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]" 114 115 // 正则模式-词语,不以下划线开头的中文、英文、数字、下划线 116 PATTERN_WORD = "^[a-zA-Z0-9\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]+$" 117 118 // 正则模式-浮点数 119 PATTERN_FLOAT = `^(-?\d+)(\.\d+)?` 120 121 // 正则模式-邮箱 122 PATTERN_EMAIL = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$" 123 124 // 正则模式-用户名-英文 125 PATTERN_USERNAMEEN = `^[a-zA-Z0-9_.]+$` 126 127 // 正则模式-大陆手机号 128 PATTERN_MOBILECN = `^1[3-9]\d{9}$` 129 130 // 正则模式-固定电话 131 PATTERN_TEL_FIX = `^(010|02\d{1}|0[3-9]\d{2})-\d{7,9}(-\d+)?$` 132 133 // 正则模式-400或800 134 PATTERN_TEL_4800 = `^[48]00\d?(-?\d{3,4}){2}$` 135 136 // 正则模式-座机号(固定电话或400或800) 137 PATTERN_TELEPHONE = `(` + PATTERN_TEL_FIX + `)|(` + PATTERN_TEL_4800 + `)` 138 139 // 正则模式-电话(手机或固话) 140 PATTERN_PHONE = `(` + PATTERN_MOBILECN + `)|(` + PATTERN_TEL_FIX + `)` 141 142 // 正则模式-日期时间 143 PATTERN_DATETIME = `^[0-9]{4}(|\-[0-9]{2}(|\-[0-9]{2}(|\s+[0-9]{2}(|:[0-9]{2}(|:[0-9]{2})))))$` 144 145 // 正则模式-身份证号码,18位或15位 146 PATTERN_CREDIT_NO = `(^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)` 147 148 // 正则模式-小写英文 149 PATTERN_ALPHA_LOWER = `^[a-z]+$` 150 151 // 正则模式-大写英文 152 PATTERN_ALPHA_UPPER = `^[A-Z]+$` 153 154 // 正则模式-字母和数字 155 PATTERN_ALPHA_NUMERIC = `^[a-zA-Z0-9]+$` 156 157 // 正则模式-十六进制颜色 158 PATTERN_HEXCOLOR = `^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$` 159 160 // 正则模式-RGB颜色 161 PATTERN_RGBCOLOR = "^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$" 162 163 // 正则模式-全空白字符 164 PATTERN_WHITESPACE_ALL = "^[[:space:]]+$" 165 166 // 正则模式-带空白字符 167 PATTERN_WHITESPACE_HAS = ".*[[:space:]]" 168 169 // 正则模式-连续空白符 170 PATTERN_WHITESPACE_DUPLICATE = `[[:space:]]{2,}|[\s\p{Zs}]{2,}` 171 172 // 正则模式-base64字符串 173 PATTERN_BASE64 = "^(?:[A-Za-z0-9+\\/]{4})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=|[A-Za-z0-9+\\/]{4})$" 174 175 // 正则模式-base64编码图片 176 PATTERN_BASE64_IMAGE = `^data:\s*(image|img)\/(\w+);base64` 177 178 // 正则模式-html标签 179 PATTERN_HTML_TAGS = `<(.|\n)*?>` 180 181 // 正则模式-DNS名称 182 PATTERN_DNSNAME = `^([a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62}){1}(\.[a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62})*[\._]?$` 183 184 // 正则模式-MD5 185 PATTERN_MD5 = `^(?i)([0-9a-h]{32})$` 186 187 // 正则模式-SHA1 188 PATTERN_SHA1 = `^(?i)([0-9a-h]{40})$` 189 190 // 正则模式-SHA256 191 PATTERN_SHA256 = `^(?i)([0-9a-h]{64})$` 192 193 // 正则模式-SHA512 194 PATTERN_SHA512 = `^(?i)([0-9a-h]{128})$` 195 196 // 正则模式-emoji表情符 197 PATTERN_EMOJI = `[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0077}\x{E006C}\x{E0073}\x{E007F})|[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0073}\x{E0063}\x{E0074}\x{E007F})|[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0065}\x{E006E}\x{E0067}\x{E007F})|[\x{1F3F4}](?:\x{200D}\x{2620}\x{FE0F})|[\x{1F3F3}](?:\x{FE0F}\x{200D}\x{1F308})|[\x{0023}\x{002A}\x{0030}\x{0031}\x{0032}\x{0033}\x{0034}\x{0035}\x{0036}\x{0037}\x{0038}\x{0039}](?:\x{FE0F}\x{20E3})|[\x{1F441}](?:\x{FE0F}\x{200D}\x{1F5E8}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F466})|[\x{1F469}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F469})|[\x{1F469}\x{1F468}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F468})|[\x{1F469}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F469})|[\x{1F469}\x{1F468}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F468})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F9B3})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F9B3})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F9B3})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F9B3})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F9B3})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B3})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F9B2})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F9B2})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F9B2})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F9B2})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F9B2})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B2})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F9B1})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F9B1})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F9B1})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F9B1})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F9B1})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B1})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F9B0})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F9B0})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F9B0})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F9B0})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F9B0})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B0})|[\x{1F575}\x{1F3CC}\x{26F9}\x{1F3CB}](?:\x{FE0F}\x{200D}\x{2640}\x{FE0F})|[\x{1F575}\x{1F3CC}\x{26F9}\x{1F3CB}](?:\x{FE0F}\x{200D}\x{2642}\x{FE0F})|[\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{1F3FF}\x{200D}\x{2640}\x{FE0F})|[\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{1F3FE}\x{200D}\x{2640}\x{FE0F})|[\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{1F3FD}\x{200D}\x{2640}\x{FE0F})|[\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{1F3FC}\x{200D}\x{2640}\x{FE0F})|[\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{1F3FB}\x{200D}\x{2640}\x{FE0F})|[\x{1F46E}\x{1F9B8}\x{1F9B9}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F9DE}\x{1F9DF}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F46F}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93C}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{200D}\x{2640}\x{FE0F})|[\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{1F3FF}\x{200D}\x{2642}\x{FE0F})|[\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{1F3FE}\x{200D}\x{2642}\x{FE0F})|[\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{1F3FD}\x{200D}\x{2642}\x{FE0F})|[\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{1F3FC}\x{200D}\x{2642}\x{FE0F})|[\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{1F3FB}\x{200D}\x{2642}\x{FE0F})|[\x{1F46E}\x{1F9B8}\x{1F9B9}\x{1F482}\x{1F477}\x{1F473}\x{1F471}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F9DE}\x{1F9DF}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F46F}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93C}\x{1F93D}\x{1F93E}\x{1F939}](?:\x{200D}\x{2642}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F692})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F692})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F692})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F692})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F692})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F692})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F680})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F680})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F680})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F680})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F680})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F680})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{2708}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{2708}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{2708}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{2708}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{2708}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2708}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F3A8})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F3A8})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F3A8})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F3A8})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F3A8})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3A8})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F3A4})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F3A4})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F3A4})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F3A4})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F3A4})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3A4})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F4BB})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F4BB})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F4BB})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F4BB})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F4BB})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F4BB})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F52C})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F52C})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F52C})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F52C})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F52C})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F52C})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F4BC})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F4BC})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F4BC})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F4BC})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F4BC})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F4BC})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F3ED})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F3ED})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F3ED})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F3ED})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F3ED})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3ED})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F527})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F527})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F527})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F527})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F527})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F527})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F373})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F373})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F373})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F373})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F373})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F373})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F33E})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F33E})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F33E})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F33E})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F33E})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F33E})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{2696}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{2696}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{2696}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{2696}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{2696}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2696}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F3EB})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F3EB})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F3EB})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F3EB})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F3EB})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3EB})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{1F393})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{1F393})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{1F393})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{1F393})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{1F393})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F393})|[\x{1F468}\x{1F469}](?:\x{1F3FF}\x{200D}\x{2695}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FE}\x{200D}\x{2695}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FD}\x{200D}\x{2695}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FC}\x{200D}\x{2695}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{1F3FB}\x{200D}\x{2695}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2695}\x{FE0F})|[\x{1F476}\x{1F9D2}\x{1F466}\x{1F467}\x{1F9D1}\x{1F468}\x{1F469}\x{1F9D3}\x{1F474}\x{1F475}\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F934}\x{1F478}\x{1F473}\x{1F472}\x{1F9D5}\x{1F9D4}\x{1F471}\x{1F935}\x{1F470}\x{1F930}\x{1F931}\x{1F47C}\x{1F385}\x{1F936}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F483}\x{1F57A}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F6C0}\x{1F6CC}\x{1F574}\x{1F3C7}\x{1F3C2}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}\x{1F933}\x{1F4AA}\x{1F9B5}\x{1F9B6}\x{1F448}\x{1F449}\x{261D}\x{1F446}\x{1F595}\x{1F447}\x{270C}\x{1F91E}\x{1F596}\x{1F918}\x{1F919}\x{1F590}\x{270B}\x{1F44C}\x{1F44D}\x{1F44E}\x{270A}\x{1F44A}\x{1F91B}\x{1F91C}\x{1F91A}\x{1F44B}\x{1F91F}\x{270D}\x{1F44F}\x{1F450}\x{1F64C}\x{1F932}\x{1F64F}\x{1F485}\x{1F442}\x{1F443}](?:\x{1F3FF})|[\x{1F476}\x{1F9D2}\x{1F466}\x{1F467}\x{1F9D1}\x{1F468}\x{1F469}\x{1F9D3}\x{1F474}\x{1F475}\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F934}\x{1F478}\x{1F473}\x{1F472}\x{1F9D5}\x{1F9D4}\x{1F471}\x{1F935}\x{1F470}\x{1F930}\x{1F931}\x{1F47C}\x{1F385}\x{1F936}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F483}\x{1F57A}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F6C0}\x{1F6CC}\x{1F574}\x{1F3C7}\x{1F3C2}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}\x{1F933}\x{1F4AA}\x{1F9B5}\x{1F9B6}\x{1F448}\x{1F449}\x{261D}\x{1F446}\x{1F595}\x{1F447}\x{270C}\x{1F91E}\x{1F596}\x{1F918}\x{1F919}\x{1F590}\x{270B}\x{1F44C}\x{1F44D}\x{1F44E}\x{270A}\x{1F44A}\x{1F91B}\x{1F91C}\x{1F91A}\x{1F44B}\x{1F91F}\x{270D}\x{1F44F}\x{1F450}\x{1F64C}\x{1F932}\x{1F64F}\x{1F485}\x{1F442}\x{1F443}](?:\x{1F3FE})|[\x{1F476}\x{1F9D2}\x{1F466}\x{1F467}\x{1F9D1}\x{1F468}\x{1F469}\x{1F9D3}\x{1F474}\x{1F475}\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F934}\x{1F478}\x{1F473}\x{1F472}\x{1F9D5}\x{1F9D4}\x{1F471}\x{1F935}\x{1F470}\x{1F930}\x{1F931}\x{1F47C}\x{1F385}\x{1F936}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F483}\x{1F57A}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F6C0}\x{1F6CC}\x{1F574}\x{1F3C7}\x{1F3C2}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}\x{1F933}\x{1F4AA}\x{1F9B5}\x{1F9B6}\x{1F448}\x{1F449}\x{261D}\x{1F446}\x{1F595}\x{1F447}\x{270C}\x{1F91E}\x{1F596}\x{1F918}\x{1F919}\x{1F590}\x{270B}\x{1F44C}\x{1F44D}\x{1F44E}\x{270A}\x{1F44A}\x{1F91B}\x{1F91C}\x{1F91A}\x{1F44B}\x{1F91F}\x{270D}\x{1F44F}\x{1F450}\x{1F64C}\x{1F932}\x{1F64F}\x{1F485}\x{1F442}\x{1F443}](?:\x{1F3FD})|[\x{1F476}\x{1F9D2}\x{1F466}\x{1F467}\x{1F9D1}\x{1F468}\x{1F469}\x{1F9D3}\x{1F474}\x{1F475}\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F934}\x{1F478}\x{1F473}\x{1F472}\x{1F9D5}\x{1F9D4}\x{1F471}\x{1F935}\x{1F470}\x{1F930}\x{1F931}\x{1F47C}\x{1F385}\x{1F936}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F483}\x{1F57A}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F6C0}\x{1F6CC}\x{1F574}\x{1F3C7}\x{1F3C2}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}\x{1F933}\x{1F4AA}\x{1F9B5}\x{1F9B6}\x{1F448}\x{1F449}\x{261D}\x{1F446}\x{1F595}\x{1F447}\x{270C}\x{1F91E}\x{1F596}\x{1F918}\x{1F919}\x{1F590}\x{270B}\x{1F44C}\x{1F44D}\x{1F44E}\x{270A}\x{1F44A}\x{1F91B}\x{1F91C}\x{1F91A}\x{1F44B}\x{1F91F}\x{270D}\x{1F44F}\x{1F450}\x{1F64C}\x{1F932}\x{1F64F}\x{1F485}\x{1F442}\x{1F443}](?:\x{1F3FC})|[\x{1F476}\x{1F9D2}\x{1F466}\x{1F467}\x{1F9D1}\x{1F468}\x{1F469}\x{1F9D3}\x{1F474}\x{1F475}\x{1F46E}\x{1F575}\x{1F482}\x{1F477}\x{1F934}\x{1F478}\x{1F473}\x{1F472}\x{1F9D5}\x{1F9D4}\x{1F471}\x{1F935}\x{1F470}\x{1F930}\x{1F931}\x{1F47C}\x{1F385}\x{1F936}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F647}\x{1F926}\x{1F937}\x{1F486}\x{1F487}\x{1F6B6}\x{1F3C3}\x{1F483}\x{1F57A}\x{1F9D6}\x{1F9D7}\x{1F9D8}\x{1F6C0}\x{1F6CC}\x{1F574}\x{1F3C7}\x{1F3C2}\x{1F3CC}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{26F9}\x{1F3CB}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93D}\x{1F93E}\x{1F939}\x{1F933}\x{1F4AA}\x{1F9B5}\x{1F9B6}\x{1F448}\x{1F449}\x{261D}\x{1F446}\x{1F595}\x{1F447}\x{270C}\x{1F91E}\x{1F596}\x{1F918}\x{1F919}\x{1F590}\x{270B}\x{1F44C}\x{1F44D}\x{1F44E}\x{270A}\x{1F44A}\x{1F91B}\x{1F91C}\x{1F91A}\x{1F44B}\x{1F91F}\x{270D}\x{1F44F}\x{1F450}\x{1F64C}\x{1F932}\x{1F64F}\x{1F485}\x{1F442}\x{1F443}](?:\x{1F3FB})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F8}\x{1F1F9}\x{1F1FA}](?:\x{1F1FF})|[\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F0}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1FA}](?:\x{1F1FE})|[\x{1F1E6}\x{1F1E8}\x{1F1F2}\x{1F1F8}](?:\x{1F1FD})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F7}\x{1F1F9}\x{1F1FF}](?:\x{1F1FC})|[\x{1F1E7}\x{1F1E8}\x{1F1F1}\x{1F1F2}\x{1F1F8}\x{1F1F9}](?:\x{1F1FB})|[\x{1F1E6}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1ED}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F7}\x{1F1FB}](?:\x{1F1FA})|[\x{1F1E6}\x{1F1E7}\x{1F1EA}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FE}](?:\x{1F1F9})|[\x{1F1E6}\x{1F1E7}\x{1F1EA}\x{1F1EC}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F7}\x{1F1F8}\x{1F1FA}\x{1F1FC}](?:\x{1F1F8})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EB}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F0}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1F7})|[\x{1F1E6}\x{1F1E7}\x{1F1EC}\x{1F1EE}\x{1F1F2}](?:\x{1F1F6})|[\x{1F1E8}\x{1F1EC}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F3}](?:\x{1F1F5})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1EE}\x{1F1EF}\x{1F1F2}\x{1F1F3}\x{1F1F7}\x{1F1F8}\x{1F1F9}](?:\x{1F1F4})|[\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}](?:\x{1F1F3})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F4}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FF}](?:\x{1F1F2})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1EE}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1F1})|[\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1ED}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FD}](?:\x{1F1F0})|[\x{1F1E7}\x{1F1E9}\x{1F1EB}\x{1F1F8}\x{1F1F9}](?:\x{1F1EF})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EB}\x{1F1EC}\x{1F1F0}\x{1F1F1}\x{1F1F3}\x{1F1F8}\x{1F1FB}](?:\x{1F1EE})|[\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1ED})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EA}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}](?:\x{1F1EC})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F9}\x{1F1FC}](?:\x{1F1EB})|[\x{1F1E6}\x{1F1E7}\x{1F1E9}\x{1F1EA}\x{1F1EC}\x{1F1EE}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F7}\x{1F1F8}\x{1F1FB}\x{1F1FE}](?:\x{1F1EA})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1EE}\x{1F1F2}\x{1F1F8}\x{1F1F9}](?:\x{1F1E9})|[\x{1F1E6}\x{1F1E8}\x{1F1EA}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F8}\x{1F1F9}\x{1F1FB}](?:\x{1F1E8})|[\x{1F1E7}\x{1F1EC}\x{1F1F1}\x{1F1F8}](?:\x{1F1E7})|[\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F6}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}\x{1F1FF}](?:\x{1F1E6})|[\x{00A9}\x{00AE}\x{203C}\x{2049}\x{2122}\x{2139}\x{2194}-\x{2199}\x{21A9}-\x{21AA}\x{231A}-\x{231B}\x{2328}\x{23CF}\x{23E9}-\x{23F3}\x{23F8}-\x{23FA}\x{24C2}\x{25AA}-\x{25AB}\x{25B6}\x{25C0}\x{25FB}-\x{25FE}\x{2600}-\x{2604}\x{260E}\x{2611}\x{2614}-\x{2615}\x{2618}\x{261D}\x{2620}\x{2622}-\x{2623}\x{2626}\x{262A}\x{262E}-\x{262F}\x{2638}-\x{263A}\x{2640}\x{2642}\x{2648}-\x{2653}\x{2660}\x{2663}\x{2665}-\x{2666}\x{2668}\x{267B}\x{267E}-\x{267F}\x{2692}-\x{2697}\x{2699}\x{269B}-\x{269C}\x{26A0}-\x{26A1}\x{26AA}-\x{26AB}\x{26B0}-\x{26B1}\x{26BD}-\x{26BE}\x{26C4}-\x{26C5}\x{26C8}\x{26CE}-\x{26CF}\x{26D1}\x{26D3}-\x{26D4}\x{26E9}-\x{26EA}\x{26F0}-\x{26F5}\x{26F7}-\x{26FA}\x{26FD}\x{2702}\x{2705}\x{2708}-\x{270D}\x{270F}\x{2712}\x{2714}\x{2716}\x{271D}\x{2721}\x{2728}\x{2733}-\x{2734}\x{2744}\x{2747}\x{274C}\x{274E}\x{2753}-\x{2755}\x{2757}\x{2763}-\x{2764}\x{2795}-\x{2797}\x{27A1}\x{27B0}\x{27BF}\x{2934}-\x{2935}\x{2B05}-\x{2B07}\x{2B1B}-\x{2B1C}\x{2B50}\x{2B55}\x{3030}\x{303D}\x{3297}\x{3299}\x{1F004}\x{1F0CF}\x{1F170}-\x{1F171}\x{1F17E}-\x{1F17F}\x{1F18E}\x{1F191}-\x{1F19A}\x{1F201}-\x{1F202}\x{1F21A}\x{1F22F}\x{1F232}-\x{1F23A}\x{1F250}-\x{1F251}\x{1F300}-\x{1F321}\x{1F324}-\x{1F393}\x{1F396}-\x{1F397}\x{1F399}-\x{1F39B}\x{1F39E}-\x{1F3F0}\x{1F3F3}-\x{1F3F5}\x{1F3F7}-\x{1F3FA}\x{1F400}-\x{1F4FD}\x{1F4FF}-\x{1F53D}\x{1F549}-\x{1F54E}\x{1F550}-\x{1F567}\x{1F56F}-\x{1F570}\x{1F573}-\x{1F57A}\x{1F587}\x{1F58A}-\x{1F58D}\x{1F590}\x{1F595}-\x{1F596}\x{1F5A4}-\x{1F5A5}\x{1F5A8}\x{1F5B1}-\x{1F5B2}\x{1F5BC}\x{1F5C2}-\x{1F5C4}\x{1F5D1}-\x{1F5D3}\x{1F5DC}-\x{1F5DE}\x{1F5E1}\x{1F5E3}\x{1F5E8}\x{1F5EF}\x{1F5F3}\x{1F5FA}-\x{1F64F}\x{1F680}-\x{1F6C5}\x{1F6CB}-\x{1F6D2}\x{1F6E0}-\x{1F6E5}\x{1F6E9}\x{1F6EB}-\x{1F6EC}\x{1F6F0}\x{1F6F3}-\x{1F6F9}\x{1F910}-\x{1F93A}\x{1F93C}-\x{1F93E}\x{1F940}-\x{1F945}\x{1F947}-\x{1F970}\x{1F973}-\x{1F976}\x{1F97A}\x{1F97C}-\x{1F9A2}\x{1F9B0}-\x{1F9B9}\x{1F9C0}-\x{1F9C2}\x{1F9D0}-\x{1F9FF}]` 198 ) 199 ``` 200 201 ```go 202 var ( 203 // Kuptime 当前服务启动时间 204 Kuptime = time.Now() 205 206 // KFile utilities 207 KFile LkkFile 208 209 // KStr utilities 210 KStr LkkString 211 212 // KNum utilities 213 KNum LkkNumber 214 215 // KArr utilities 216 KArr LkkArray 217 218 // KTime utilities 219 KTime LkkTime 220 221 // KConv utilities 222 KConv LkkConvert 223 224 // KOS utilities 225 KOS LkkOS 226 227 // KEncr utilities 228 KEncr LkkEncrypt 229 230 // KDbug utilities 231 KDbug LkkDebug 232 233 // KPrivCidrs 私有网段的CIDR数组 234 KPrivCidrs []*net.IPNet 235 236 // KDelimiter 本库自定义分隔符 237 KDelimiter = "$@#KSYS#@$" 238 239 // 身份证区域 240 CreditArea = map[string]string{"11": "北京", "12": "天津", "13": "河北", "14": "山西", "15": "内蒙古", "21": "辽宁", "22": "吉林", "23": "黑龙江", " 31": "上海", "32": "江苏", "33": "浙江", "34": "安徽", "35": "福建", "36": "江西", "37": "山东", "41": "河南", "42": "湖北", "43": "湖南", "44": "广东", "45": "广西", "46": "海南", "50": "重庆", "51": "四川", "52": "贵州", "53": "云南", "54": "西藏", "61": "陕西", "62": "甘肃", "63": "青海", "64": "宁夏", "65": "新疆", "71": "台湾", "81": "香港", "82": "澳门", "91": "国外"} 241 242 // html抽取文本要排除的标签 243 TextHtmlExcludeTags = []string{"head", "title", "img", "form", "textarea", "input", "select", "button", "iframe", "script", "style", "option"} 244 245 // 已编译的正则 246 RegFormatDir = regexp.MustCompile(`[\/]{2,}`) //连续的"//"或"\\"或"\/"或"/\" 247 RegChineseAll = regexp.MustCompile(PATTERN_CHINESE_ALL) 248 RegChineseName = regexp.MustCompile(PATTERN_CHINESE_NAME) 249 RegWord = regexp.MustCompile(PATTERN_WORD) 250 RegMultiByte = regexp.MustCompile(PATTERN_MULTIBYTE) 251 RegFullWidth = regexp.MustCompile(PATTERN_FULLWIDTH) 252 RegHalfWidth = regexp.MustCompile(PATTERN_HALFWIDTH) 253 RegFloat = regexp.MustCompile(PATTERN_FLOAT) 254 RegEmail = regexp.MustCompile(PATTERN_EMAIL) 255 RegMobilecn = regexp.MustCompile(PATTERN_MOBILECN) 256 RegTelephone = regexp.MustCompile(PATTERN_TELEPHONE) 257 RegPhone = regexp.MustCompile(PATTERN_PHONE) 258 RegDatetime = regexp.MustCompile(PATTERN_DATETIME) 259 RegCreditno = regexp.MustCompile(PATTERN_CREDIT_NO) 260 RegAlphaLower = regexp.MustCompile(PATTERN_ALPHA_LOWER) 261 RegAlphaUpper = regexp.MustCompile(PATTERN_ALPHA_UPPER) 262 RegAlphaNumeric = regexp.MustCompile(PATTERN_ALPHA_NUMERIC) 263 RegHexcolor = regexp.MustCompile(PATTERN_HEXCOLOR) 264 RegRgbcolor = regexp.MustCompile(PATTERN_RGBCOLOR) 265 RegWhitespace = regexp.MustCompile(`\s`) 266 RegWhitespaceAll = regexp.MustCompile(PATTERN_WHITESPACE_ALL) 267 RegWhitespaceHas = regexp.MustCompile(PATTERN_WHITESPACE_HAS) 268 RegWhitespaceDuplicate = regexp.MustCompile(PATTERN_WHITESPACE_DUPLICATE) 269 RegBase64 = regexp.MustCompile(PATTERN_BASE64) 270 RegBase64Image = regexp.MustCompile(PATTERN_BASE64_IMAGE) 271 RegHtmlTag = regexp.MustCompile(PATTERN_HTML_TAGS) 272 RegDNSname = regexp.MustCompile(PATTERN_DNSNAME) 273 RegUrlBackslashDuplicate = regexp.MustCompile(`([^:])[\/]{2,}`) //url中连续的"//"或"\\"或"\/"或"/\" 274 RegMd5 = regexp.MustCompile(PATTERN_MD5) 275 RegSha1 = regexp.MustCompile(PATTERN_SHA1) 276 RegSha256 = regexp.MustCompile(PATTERN_SHA256) 277 RegSha512 = regexp.MustCompile(PATTERN_SHA512) 278 RegEmoji = regexp.MustCompile(PATTERN_EMOJI) 279 RegUsernameen = regexp.MustCompile(PATTERN_USERNAMEEN) 280 ) 281 ``` 282 283 #### func CallFunc 284 285 ```go 286 func CallFunc(f interface{}, args ...interface{}) (results []interface{}, err error) 287 ``` 288 CallFunc 动态调用函数. 289 290 #### func ValidFunc 291 292 ```go 293 func ValidFunc(f interface{}, args ...interface{}) (vf reflect.Value, vargs []reflect.Value, err error) 294 ``` 295 ValidFunc 检查是否函数,并且参数个数、类型是否正确. 返回有效的函数、有效的参数. 296 297 #### type BiosInfo 298 299 ```go 300 type BiosInfo struct { 301 Vendor string `json:"vendor"` 302 Version string `json:"version"` 303 Date string `json:"date"` 304 } 305 ``` 306 307 BiosInfo BIOS信息 308 309 #### type BoardInfo 310 311 ```go 312 type BoardInfo struct { 313 Name string `json:"name"` 314 Vendor string `json:"vendor"` 315 Version string `json:"version"` 316 Serial string `json:"serial"` 317 AssetTag string `json:"assettag"` 318 } 319 ``` 320 321 BoardInfo Board信息 322 323 #### type CallBack 324 325 ```go 326 type CallBack func() 327 ``` 328 329 CallBack 回调执行函数,无参数且无返回值 330 331 #### type CpuInfo 332 333 ```go 334 type CpuInfo struct { 335 Vendor string `json:"vendor"` 336 Model string `json:"model"` 337 Speed string `json:"speed"` // CPU clock rate in MHz 338 Cache uint `json:"cache"` // CPU cache size in KB 339 Cpus uint `json:"cpus"` // number of physical CPUs 340 Cores uint `json:"cores"` // number of physical CPU cores 341 Threads uint `json:"threads"` // number of logical (HT) CPU cores 342 } 343 ``` 344 345 CpuInfo CPU信息 346 347 #### type FileFilter 348 349 ```go 350 type FileFilter func(string) bool 351 ``` 352 353 FileFilter 文件过滤函数 354 355 #### type LkkArray 356 357 ```go 358 type LkkArray byte 359 ``` 360 361 LkkArray is the receiver of array utilities 362 363 #### func (*LkkArray) ArrayChunk 364 365 ```go 366 func (ka *LkkArray) ArrayChunk(arr interface{}, size int) [][]interface{} 367 ``` 368 ArrayChunk 将一个数组/切片分割成多个,size为每个子数组的长度. 369 370 #### func (*LkkArray) ArrayColumn 371 372 ```go 373 func (ka *LkkArray) ArrayColumn(arr interface{}, columnKey string) []interface{} 374 ``` 375 ArrayColumn 返回数组(切片/字典)中指定的一列. arr的元素必须是字典;该方法效率低,因为嵌套了两层反射和遍历. 376 377 #### func (*LkkArray) ArrayDiff 378 379 ```go 380 func (ka *LkkArray) ArrayDiff(arr1, arr2 interface{}) []interface{} 381 ``` 382 ArrayDiff 计算数组(数组/切片/字典)的差集,返回在 arr1 中但是不在 arr2 里,且非空元素(nil,'')的值. 383 384 #### func (*LkkArray) ArrayFill 385 386 ```go 387 func (ka *LkkArray) ArrayFill(value interface{}, num int) []interface{} 388 ``` 389 ArrayFill 用给定的值value填充数组,num为插入元素的数量. 390 391 #### func (*LkkArray) ArrayFlip 392 393 ```go 394 func (ka *LkkArray) ArrayFlip(arr interface{}) map[interface{}]interface{} 395 ``` 396 ArrayFlip 交换数组(切片/字典)中的键和值. 397 398 #### func (*LkkArray) ArrayKeyExists 399 400 ```go 401 func (ka *LkkArray) ArrayKeyExists(key interface{}, arr interface{}) bool 402 ``` 403 ArrayKeyExists 检查数组里是否有指定的键名或索引. 404 405 #### func (*LkkArray) ArrayKeys 406 407 ```go 408 func (ka *LkkArray) ArrayKeys(arr interface{}) []interface{} 409 ``` 410 ArrayKeys 返回数组(切片/字典)中所有的键名. 411 412 #### func (*LkkArray) ArrayPad 413 414 ```go 415 func (ka *LkkArray) ArrayPad(arr interface{}, size int, item interface{}) []interface{} 416 ``` 417 ArrayPad 以指定长度将一个值item填充进数组/切片. 若 size 为正,则填补到数组的右侧,如果为负则从左侧开始填补; 若 size 418 的绝对值小于或等于 arr 数组的长度则没有任何填补. 419 420 #### func (*LkkArray) ArrayPop 421 422 ```go 423 func (ka *LkkArray) ArrayPop(s *[]interface{}) interface{} 424 ``` 425 ArrayPop 弹出数组最后一个元素(出栈),并返回该元素. 426 427 #### func (*LkkArray) ArrayPush 428 429 ```go 430 func (ka *LkkArray) ArrayPush(s *[]interface{}, elements ...interface{}) int 431 ``` 432 ArrayPush 将一个或多个元素压入数组的末尾(入栈),返回处理之后数组的元素个数. 433 434 #### func (*LkkArray) ArrayRand 435 436 ```go 437 func (ka *LkkArray) ArrayRand(arr interface{}, num int) []interface{} 438 ``` 439 ArrayRand 从数组/切片中随机取出num个单元. 440 441 #### func (*LkkArray) ArrayReverse 442 443 ```go 444 func (ka *LkkArray) ArrayReverse(arr interface{}) []interface{} 445 ``` 446 ArrayReverse 返回单元顺序相反的数组(仅限数组和切片). 447 448 #### func (*LkkArray) ArraySearchItem 449 450 ```go 451 func (ka *LkkArray) ArraySearchItem(arr interface{}, condition map[string]interface{}) (res interface{}) 452 ``` 453 ArraySearchItem 从数组中搜索对应元素(单个). arr为要查找的数组,condition为条件字典. 454 455 #### func (*LkkArray) ArraySearchMutil 456 457 ```go 458 func (ka *LkkArray) ArraySearchMutil(arr interface{}, condition map[string]interface{}) (res []interface{}) 459 ``` 460 ArraySearchMutil 从数组中搜索对应元素(多个). arr为要查找的数组,condition为条件字典. 461 462 #### func (*LkkArray) ArrayShift 463 464 ```go 465 func (ka *LkkArray) ArrayShift(s *[]interface{}) interface{} 466 ``` 467 ArrayShift 将数组开头的元素移出数组,并返回该元素. 468 469 #### func (*LkkArray) ArraySlice 470 471 ```go 472 func (ka *LkkArray) ArraySlice(arr interface{}, offset, size int) []interface{} 473 ``` 474 ArraySlice 返回根据 offset 和 size 参数所指定的 arr 数组/切片中的一段切片. 475 476 #### func (*LkkArray) ArrayUnique 477 478 ```go 479 func (ka *LkkArray) ArrayUnique(arr interface{}) []interface{} 480 ``` 481 ArrayUnique 移除数组中重复的值. 482 483 #### func (*LkkArray) ArrayUnshift 484 485 ```go 486 func (ka *LkkArray) ArrayUnshift(s *[]interface{}, elements ...interface{}) int 487 ``` 488 ArrayUnshift 在数组开头插入一个或多个元素,返回处理之后数组的元素个数. 489 490 #### func (*LkkArray) ArrayValues 491 492 ```go 493 func (ka *LkkArray) ArrayValues(arr interface{}, filterNil bool) []interface{} 494 ``` 495 ArrayValues 返回数组(切片/字典)中所有的值. filterNil是否过滤空元素(nil,''),true时排除空元素,false时保留空元素. 496 497 #### func (*LkkArray) Implode 498 499 ```go 500 func (ka *LkkArray) Implode(delimiter string, arr interface{}) string 501 ``` 502 Implode 用delimiter将数组(数组/切片/字典)的值连接为一个字符串. 503 504 #### func (*LkkArray) InArray 505 506 ```go 507 func (ka *LkkArray) InArray(needle interface{}, haystack interface{}) bool 508 ``` 509 InArray 元素是否在数组(切片/字典)内. 510 511 #### func (*LkkArray) InInt64Slice 512 513 ```go 514 func (ka *LkkArray) InInt64Slice(i int64, list []int64) bool 515 ``` 516 InInt64Slice 是否在64位整型数组/切片内. 517 518 #### func (*LkkArray) InIntSlice 519 520 ```go 521 func (ka *LkkArray) InIntSlice(i int, list []int) bool 522 ``` 523 InIntSlice 是否在整型数组/切片内. 524 525 #### func (*LkkArray) InStringSlice 526 527 ```go 528 func (ka *LkkArray) InStringSlice(str string, list []string) bool 529 ``` 530 InStringSlice 是否在字符串数组/切片内. 531 532 #### func (*LkkArray) IsArrayOrSlice 533 534 ```go 535 func (ka *LkkArray) IsArrayOrSlice(val interface{}, chkType uint8) int 536 ``` 537 IsArrayOrSlice 检查变量是否数组或切片. chkType检查类型,枚举值有(1仅数组,2仅切片,3数组或切片);结果为-1表示非,>=0表示是 538 539 #### func (*LkkArray) IsEqualArray 540 541 ```go 542 func (ka *LkkArray) IsEqualArray(expected, actual interface{}) bool 543 ``` 544 IsEqualArray 两个数组/切片是否相同(不管元素顺序). expected, actual 是要比较的数组/切片. 545 546 #### func (*LkkArray) IsMap 547 548 ```go 549 func (ka *LkkArray) IsMap(val interface{}) bool 550 ``` 551 IsMap 检查变量是否字典. 552 553 #### func (*LkkArray) JoinInts 554 555 ```go 556 func (ka *LkkArray) JoinInts(ints []int, delimiter string) (res string) 557 ``` 558 JoinInts 使用分隔符delimiter连接整数数组. 559 560 #### func (*LkkArray) JoinStrings 561 562 ```go 563 func (ka *LkkArray) JoinStrings(strs []string, delimiter string) (res string) 564 ``` 565 JoinStrings 使用分隔符delimiter连接字符串数组.效率比Implode高. 566 567 #### func (*LkkArray) MergeMap 568 569 ```go 570 func (ka *LkkArray) MergeMap(key2Str bool, ss ...interface{}) map[interface{}]interface{} 571 ``` 572 MergeMap 合并字典. 相同的键名时,后面的值将覆盖前一个值;key2Str是否将键转换为字符串;ss是元素为字典的数组. 573 574 #### func (*LkkArray) MergeSlice 575 576 ```go 577 func (ka *LkkArray) MergeSlice(filterNil bool, ss ...interface{}) []interface{} 578 ``` 579 MergeSlice 合并一个或多个数组/切片. 580 filterNil是否过滤空元素(nil,''),true时排除空元素,false时保留空元素;ss是元素为数组/切片的数组. 581 582 #### func (*LkkArray) Unique64Ints 583 584 ```go 585 func (ka *LkkArray) Unique64Ints(ints []int64) (res []int64) 586 ``` 587 Unique64Ints 移除64位整数数组中的重复值. 588 589 #### func (*LkkArray) UniqueInts 590 591 ```go 592 func (ka *LkkArray) UniqueInts(ints []int) (res []int) 593 ``` 594 UniqueInts 移除整数数组中的重复值. 595 596 #### func (*LkkArray) UniqueStrings 597 598 ```go 599 func (ka *LkkArray) UniqueStrings(strs []string) (res []string) 600 ``` 601 UniqueStrings 移除字符串数组中的重复值. 602 603 #### type LkkCaseSwitch 604 605 ```go 606 type LkkCaseSwitch uint8 607 ``` 608 609 LkkCaseSwitch 枚举类型,大小写开关 610 611 #### type LkkConvert 612 613 ```go 614 type LkkConvert byte 615 ``` 616 617 LkkConvert is the receiver of convert utilities 618 619 #### func (*LkkConvert) BaseConvert 620 621 ```go 622 func (kc *LkkConvert) BaseConvert(number string, frombase, tobase int) (string, error) 623 ``` 624 BaseConvert 进制转换,在任意进制之间转换数字. number为输入数值,frombase为原进制,tobase为结果进制. 625 626 #### func (*LkkConvert) Bin2Dec 627 628 ```go 629 func (kc *LkkConvert) Bin2Dec(str string) (int64, error) 630 ``` 631 Bin2Dec 将二进制转换为十进制. 632 633 #### func (*LkkConvert) Bin2Hex 634 635 ```go 636 func (kc *LkkConvert) Bin2Hex(str string) (string, error) 637 ``` 638 Bin2Hex 将二进制字符串转换为十六进制字符串. 639 640 #### func (*LkkConvert) Bool2Int 641 642 ```go 643 func (kc *LkkConvert) Bool2Int(val bool) int 644 ``` 645 Bool2Int 将布尔值转换为整型. 646 647 #### func (*LkkConvert) Bool2Str 648 649 ```go 650 func (kc *LkkConvert) Bool2Str(val bool) string 651 ``` 652 Bool2Str 将布尔值转换为字符串. 653 654 #### func (*LkkConvert) Byte2Float64 655 656 ```go 657 func (kc *LkkConvert) Byte2Float64(bytes []byte) float64 658 ``` 659 Byte2Float64 字节切片转64位浮点数. 660 661 #### func (*LkkConvert) Byte2Hex 662 663 ```go 664 func (kc *LkkConvert) Byte2Hex(val []byte) string 665 ``` 666 Byte2Hex 字节切片转16进制字符串. 667 668 #### func (*LkkConvert) Byte2Hexs 669 670 ```go 671 func (kc *LkkConvert) Byte2Hexs(val []byte) []byte 672 ``` 673 Byte2Hexs 字节切片转16进制切片. 674 675 #### func (*LkkConvert) Byte2Int64 676 677 ```go 678 func (kc *LkkConvert) Byte2Int64(val []byte) int64 679 ``` 680 Byte2Int64 字节切片转64位整型. 681 682 #### func (*LkkConvert) Bytes2Str 683 684 ```go 685 func (kc *LkkConvert) Bytes2Str(val []byte) string 686 ``` 687 Bytes2Str 将字节切片转换为字符串. 零拷贝,不安全.效率是string([]byte{})的百倍以上,且转换量越大效率优势越明显. 688 689 #### func (*LkkConvert) Dec2Bin 690 691 ```go 692 func (kc *LkkConvert) Dec2Bin(number int64) string 693 ``` 694 Dec2Bin 将十进制转换为二进制. 695 696 #### func (*LkkConvert) Dec2Hex 697 698 ```go 699 func (kc *LkkConvert) Dec2Hex(number int64) string 700 ``` 701 Dec2Hex 将十进制转换为十六进制. 702 703 #### func (*LkkConvert) Dec2Oct 704 705 ```go 706 func (kc *LkkConvert) Dec2Oct(number int64) string 707 ``` 708 Dec2Oct 将十进制转换为八进制. 709 710 #### func (*LkkConvert) Float2Str 711 712 ```go 713 func (kc *LkkConvert) Float2Str(val interface{}, decimal int) string 714 ``` 715 Float2Str 将浮点数转换为字符串,decimal为小数位数. 716 717 #### func (*LkkConvert) Float64ToByte 718 719 ```go 720 func (kc *LkkConvert) Float64ToByte(val float64) []byte 721 ``` 722 Float64ToByte 64位浮点数转字节切片. 723 724 #### func (*LkkConvert) GetPointerAddrInt 725 726 ```go 727 func (kc *LkkConvert) GetPointerAddrInt(variable interface{}) int64 728 ``` 729 GetPointerAddrInt 获取变量指针地址整型值.variable为变量. 730 731 #### func (*LkkConvert) Gettype 732 733 ```go 734 func (kc *LkkConvert) Gettype(v interface{}) string 735 ``` 736 Gettype 获取变量类型. 737 738 #### func (*LkkConvert) Hex2Bin 739 740 ```go 741 func (kc *LkkConvert) Hex2Bin(data string) (string, error) 742 ``` 743 Hex2Bin 将十六进制字符串转换为二进制字符串. 744 745 #### func (*LkkConvert) Hex2Byte 746 747 ```go 748 func (kc *LkkConvert) Hex2Byte(str string) []byte 749 ``` 750 Hex2Byte 16进制字符串转字节切片. 751 752 #### func (*LkkConvert) Hex2Dec 753 754 ```go 755 func (kc *LkkConvert) Hex2Dec(str string) (int64, error) 756 ``` 757 Hex2Dec 将十六进制转换为十进制. 758 759 #### func (*LkkConvert) Hexs2Byte 760 761 ```go 762 func (kc *LkkConvert) Hexs2Byte(val []byte) []byte 763 ``` 764 Hexs2Byte 16进制切片转byte切片. 765 766 #### func (*LkkConvert) Int2Str 767 768 ```go 769 func (kc *LkkConvert) Int2Str(val interface{}) string 770 ``` 771 Int2Str 将整数转换为字符串. 772 773 #### func (*LkkConvert) Int64ToByte 774 775 ```go 776 func (kc *LkkConvert) Int64ToByte(val int64) []byte 777 ``` 778 Int64ToByte 64位整型转字节切片. 779 780 #### func (*LkkConvert) Ip2Long 781 782 ```go 783 func (kc *LkkConvert) Ip2Long(ipAddress string) uint32 784 ``` 785 Ip2Long 将 IPV4 的字符串互联网协议转换成长整型数字. 786 787 #### func (*LkkConvert) IsBinary 788 789 ```go 790 func (kc *LkkConvert) IsBinary(s string) bool 791 ``` 792 IsBinary 字符串是否二进制. 793 794 #### func (*LkkConvert) IsBool 795 796 ```go 797 func (kc *LkkConvert) IsBool(val interface{}) bool 798 ``` 799 IsBool 是否布尔值. 800 801 #### func (*LkkConvert) IsByte 802 803 ```go 804 func (kc *LkkConvert) IsByte(val interface{}) bool 805 ``` 806 IsByte 变量是否字节切片. 807 808 #### func (*LkkConvert) IsEmpty 809 810 ```go 811 func (kc *LkkConvert) IsEmpty(val interface{}) bool 812 ``` 813 IsEmpty 检查变量是否为空. 814 815 #### func (*LkkConvert) IsFloat 816 817 ```go 818 func (kc *LkkConvert) IsFloat(val interface{}) bool 819 ``` 820 IsFloat 变量是否浮点数值. 821 822 #### func (*LkkConvert) IsHex 823 824 ```go 825 func (kc *LkkConvert) IsHex(str string) bool 826 ``` 827 IsHex 是否十六进制字符串. 828 829 #### func (*LkkConvert) IsInt 830 831 ```go 832 func (kc *LkkConvert) IsInt(val interface{}) bool 833 ``` 834 IsInt 变量是否整型数值. 835 836 #### func (*LkkConvert) IsInterface 837 838 ```go 839 func (kc *LkkConvert) IsInterface(val interface{}) bool 840 ``` 841 IsInterface 变量是否接口. 842 843 #### func (*LkkConvert) IsNil 844 845 ```go 846 func (kc *LkkConvert) IsNil(val interface{}) bool 847 ``` 848 IsNil 检查变量是否空值. 849 850 #### func (*LkkConvert) IsNumeric 851 852 ```go 853 func (kc *LkkConvert) IsNumeric(val interface{}) bool 854 ``` 855 IsNumeric 变量是否数值(不包含复数和科学计数法). 856 857 #### func (*LkkConvert) IsString 858 859 ```go 860 func (kc *LkkConvert) IsString(val interface{}) bool 861 ``` 862 IsString 变量是否字符串. 863 864 #### func (*LkkConvert) IsStruct 865 866 ```go 867 func (kc *LkkConvert) IsStruct(val interface{}) bool 868 ``` 869 IsStruct 变量是否结构体. 870 871 #### func (*LkkConvert) Long2Ip 872 873 ```go 874 func (kc *LkkConvert) Long2Ip(properAddress uint32) string 875 ``` 876 Long2Ip 将长整型转化为字符串形式带点的互联网标准格式地址(IPV4). 877 878 #### func (*LkkConvert) Oct2Dec 879 880 ```go 881 func (kc *LkkConvert) Oct2Dec(str string) (int64, error) 882 ``` 883 Oct2Dec 将八进制转换为十进制. 884 885 #### func (*LkkConvert) Runes2Bytes 886 887 ```go 888 func (kc *LkkConvert) Runes2Bytes(rs []rune) []byte 889 ``` 890 Runes2Bytes 将[]rune转为[]byte. 891 892 #### func (*LkkConvert) Str2Bool 893 894 ```go 895 func (kc *LkkConvert) Str2Bool(val string) (res bool) 896 ``` 897 Str2Bool 将字符串转换为布尔值. 1, t, T, TRUE, true, True 等字符串为真. 0, f, F, FALSE, false, 898 False 等字符串为假. 899 900 #### func (*LkkConvert) Str2Bytes 901 902 ```go 903 func (kc *LkkConvert) Str2Bytes(val string) []byte 904 ``` 905 Str2Bytes 将字符串转换为字节切片. 该方法零拷贝,但不安全.它直接转换底层指针,两者指向的相同的内存,改一个另外一个也会变. 906 仅当临时需将长字符串转换且不长时间保存时可以使用. 转换之后若没做其他操作直接改变里面的字符,则程序会崩溃. 如 b:=String2bytes("xxx"); 907 b[1]='d'; 程序将panic. 908 909 #### func (*LkkConvert) Str2Float32 910 911 ```go 912 func (kc *LkkConvert) Str2Float32(val string) float32 913 ``` 914 Str2Float32 将字符串转换为float32. 915 916 #### func (*LkkConvert) Str2Float64 917 918 ```go 919 func (kc *LkkConvert) Str2Float64(val string) (res float64) 920 ``` 921 Str2Float64 将字符串转换为float64.其中"true", "TRUE", "True"为1.0 . 922 923 #### func (*LkkConvert) Str2FloatStrict 924 925 ```go 926 func (kc *LkkConvert) Str2FloatStrict(val string, bitSize int, strict bool) float64 927 ``` 928 Str2FloatStrict 严格将字符串转换为浮点型. bitSize为类型位数,strict为是否严格检查. 929 930 #### func (*LkkConvert) Str2Int 931 932 ```go 933 func (kc *LkkConvert) Str2Int(val string) (res int) 934 ``` 935 Str2Int 将字符串转换为int.其中"true", "TRUE", "True"为1. 936 937 #### func (*LkkConvert) Str2Int16 938 939 ```go 940 func (kc *LkkConvert) Str2Int16(val string) int16 941 ``` 942 Str2Int16 将字符串转换为int16. 943 944 #### func (*LkkConvert) Str2Int32 945 946 ```go 947 func (kc *LkkConvert) Str2Int32(val string) int32 948 ``` 949 Str2Int32 将字符串转换为int32. 950 951 #### func (*LkkConvert) Str2Int64 952 953 ```go 954 func (kc *LkkConvert) Str2Int64(val string) int64 955 ``` 956 Str2Int64 将字符串转换为int64. 957 958 #### func (*LkkConvert) Str2Int8 959 960 ```go 961 func (kc *LkkConvert) Str2Int8(val string) int8 962 ``` 963 Str2Int8 将字符串转换为int8. 964 965 #### func (*LkkConvert) Str2IntStrict 966 967 ```go 968 func (kc *LkkConvert) Str2IntStrict(val string, bitSize int, strict bool) int64 969 ``` 970 Str2IntStrict 严格将字符串转换为有符号整型. bitSize为类型位数,strict为是否严格检查. 971 972 #### func (*LkkConvert) Str2Uint 973 974 ```go 975 func (kc *LkkConvert) Str2Uint(val string) uint 976 ``` 977 Str2Uint 将字符串转换为uint. 978 979 #### func (*LkkConvert) Str2Uint16 980 981 ```go 982 func (kc *LkkConvert) Str2Uint16(val string) uint16 983 ``` 984 Str2Uint16 将字符串转换为uint16. 985 986 #### func (*LkkConvert) Str2Uint32 987 988 ```go 989 func (kc *LkkConvert) Str2Uint32(val string) uint32 990 ``` 991 Str2Uint32 将字符串转换为uint32. 992 993 #### func (*LkkConvert) Str2Uint64 994 995 ```go 996 func (kc *LkkConvert) Str2Uint64(val string) uint64 997 ``` 998 Str2Uint64 将字符串转换为uint64. 999 1000 #### func (*LkkConvert) Str2Uint8 1001 1002 ```go 1003 func (kc *LkkConvert) Str2Uint8(val string) uint8 1004 ``` 1005 Str2Uint8 将字符串转换为uint8. 1006 1007 #### func (*LkkConvert) Str2UintStrict 1008 1009 ```go 1010 func (kc *LkkConvert) Str2UintStrict(val string, bitSize int, strict bool) uint64 1011 ``` 1012 Str2UintStrict 严格将字符串转换为无符号整型,bitSize为类型位数,strict为是否严格检查 1013 1014 #### func (*LkkConvert) ToBool 1015 1016 ```go 1017 func (kc *LkkConvert) ToBool(val interface{}) bool 1018 ``` 1019 ToBool 强制将变量转换为布尔值. 1020 1021 #### func (*LkkConvert) ToFloat 1022 1023 ```go 1024 func (kc *LkkConvert) ToFloat(val interface{}) (res float64) 1025 ``` 1026 ToFloat 强制将变量转换为浮点型;其中true或"true"为1.0 . 1027 1028 #### func (*LkkConvert) ToInt 1029 1030 ```go 1031 func (kc *LkkConvert) ToInt(val interface{}) int 1032 ``` 1033 ToInt 强制将变量转换为整型;其中true或"true"为1. 1034 1035 #### func (*LkkConvert) ToStr 1036 1037 ```go 1038 func (kc *LkkConvert) ToStr(val interface{}) string 1039 ``` 1040 ToStr 强制将变量转换为字符串. 1041 1042 #### type LkkDebug 1043 1044 ```go 1045 type LkkDebug byte 1046 ``` 1047 1048 LkkDebug is the receiver of debug utilities 1049 1050 #### func (*LkkDebug) CallMethod 1051 1052 ```go 1053 func (kd *LkkDebug) CallMethod(t interface{}, method string, args ...interface{}) ([]interface{}, error) 1054 ``` 1055 CallMethod 调用对象的方法. 若执行成功,则结果是该方法的返回结果; 否则返回(nil, error) 1056 1057 #### func (*LkkDebug) DumpStacks 1058 1059 ```go 1060 func (kd *LkkDebug) DumpStacks() 1061 ``` 1062 DumpStacks 打印堆栈信息. 1063 1064 #### func (*LkkDebug) GetFuncDir 1065 1066 ```go 1067 func (kd *LkkDebug) GetFuncDir() string 1068 ``` 1069 GetFuncDir 获取调用方法的文件目录. 1070 1071 #### func (*LkkDebug) GetFuncFile 1072 1073 ```go 1074 func (kd *LkkDebug) GetFuncFile() string 1075 ``` 1076 GetFuncFile 获取调用方法的文件路径. 1077 1078 #### func (*LkkDebug) GetFuncLine 1079 1080 ```go 1081 func (kd *LkkDebug) GetFuncLine() int 1082 ``` 1083 GetFuncLine 获取调用方法的行号. 1084 1085 #### func (*LkkDebug) GetFuncName 1086 1087 ```go 1088 func (kd *LkkDebug) GetFuncName(f interface{}, onlyFun ...bool) string 1089 ``` 1090 GetFunctionName 获取调用方法的名称;f为目标方法;onlyFun为true时仅返回方法,不包括包名. 1091 1092 #### func (*LkkDebug) GetFuncPackage 1093 1094 ```go 1095 func (kd *LkkDebug) GetFuncPackage(funcFile ...string) string 1096 ``` 1097 GetFuncPackage 获取调用方法或源文件的包名.funcFile为源文件路径. 1098 1099 #### func (*LkkDebug) GetMethod 1100 1101 ```go 1102 func (kd *LkkDebug) GetMethod(t interface{}, method string) interface{} 1103 ``` 1104 GetMethod 获取对象中的方法. 注意:返回的该方法中的第一个参数是接收者. 所以,调用该方法时,必须将接收者作为第一个参数传递. 1105 1106 #### func (*LkkDebug) HasMethod 1107 1108 ```go 1109 func (kd *LkkDebug) HasMethod(t interface{}, method string) bool 1110 ``` 1111 HasMethod 检查对象是否具有某方法. 1112 1113 #### type LkkEncrypt 1114 1115 ```go 1116 type LkkEncrypt byte 1117 ``` 1118 1119 LkkEncrypt is the receiver of encrypt utilities 1120 1121 #### func (*LkkEncrypt) AesCBCDecrypt 1122 1123 ```go 1124 func (ke *LkkEncrypt) AesCBCDecrypt(cipherText, key []byte, paddingType ...LkkPKCSType) ([]byte, error) 1125 ``` 1126 AesCBCDecrypt AES-CBC密码分组链接(Cipher-block chaining)模式解密. 1127 cipherText为密文;key为密钥,长16/24/32;paddingType为填充方式,枚举(PKCS_NONE,PKCS_ZERO,PKCS_SEVEN),默认PKCS_SEVEN. 1128 1129 #### func (*LkkEncrypt) AesCBCEncrypt 1130 1131 ```go 1132 func (ke *LkkEncrypt) AesCBCEncrypt(clearText, key []byte, paddingType ...LkkPKCSType) ([]byte, error) 1133 ``` 1134 AesCBCEncrypt AES-CBC密码分组链接(Cipher-block chaining)模式加密.加密无法并行,不适合对流数据加密. 1135 clearText为明文;key为密钥,长16/24/32;paddingType为填充方式,枚举(PKCS_ZERO,PKCS_SEVEN),默认PKCS_SEVEN. 1136 1137 #### func (*LkkEncrypt) AesCFBDecrypt 1138 1139 ```go 1140 func (ke *LkkEncrypt) AesCFBDecrypt(cipherText, key []byte) ([]byte, error) 1141 ``` 1142 AesCFBDecrypt AES-CFB密文反馈(Cipher feedback)模式解密. cipherText为密文;key为密钥,长16/24/32. 1143 1144 #### func (*LkkEncrypt) AesCFBEncrypt 1145 1146 ```go 1147 func (ke *LkkEncrypt) AesCFBEncrypt(clearText, key []byte) ([]byte, error) 1148 ``` 1149 AesCFBEncrypt AES-CFB密文反馈(Cipher feedback)模式加密.适合对流数据加密. 1150 clearText为明文;key为密钥,长16/24/32. 1151 1152 #### func (*LkkEncrypt) AesCTRDecrypt 1153 1154 ```go 1155 func (ke *LkkEncrypt) AesCTRDecrypt(cipherText, key []byte) ([]byte, error) 1156 ``` 1157 AesECBDecrypt AES-CTR计算器(Counter)模式解密. cipherText为密文;key为密钥,长16/24/32. 1158 1159 #### func (*LkkEncrypt) AesCTREncrypt 1160 1161 ```go 1162 func (ke *LkkEncrypt) AesCTREncrypt(clearText, key []byte) ([]byte, error) 1163 ``` 1164 AesECBEncrypt AES-CTR计算器(Counter)模式加密. clearText为明文;key为密钥,长16/24/32. 1165 1166 #### func (*LkkEncrypt) AesOFBDecrypt 1167 1168 ```go 1169 func (ke *LkkEncrypt) AesOFBDecrypt(cipherText, key []byte) ([]byte, error) 1170 ``` 1171 AesOFBDecrypt AES-OFB输出反馈(Output feedback)模式解密. cipherText为密文;key为密钥,长16/24/32. 1172 1173 #### func (*LkkEncrypt) AesOFBEncrypt 1174 1175 ```go 1176 func (ke *LkkEncrypt) AesOFBEncrypt(clearText, key []byte) ([]byte, error) 1177 ``` 1178 AesOFBEncrypt AES-OFB输出反馈(Output feedback)模式加密.适合对流数据加密. 1179 clearText为明文;key为密钥,长16/24/32. 1180 1181 #### func (*LkkEncrypt) AuthCode 1182 1183 ```go 1184 func (ke *LkkEncrypt) AuthCode(str, key []byte, encode bool, expiry int64) ([]byte, int64) 1185 ``` 1186 AuthCode 授权码编码或解码;encode为true时编码,为false解码;expiry为有效期,秒;返回结果为加密/解密的字符串和有效期时间戳. 1187 1188 #### func (*LkkEncrypt) Base64Decode 1189 1190 ```go 1191 func (ke *LkkEncrypt) Base64Decode(str []byte) ([]byte, error) 1192 ``` 1193 Base64Decode 对使用 MIME base64 编码的数据进行解码. 1194 1195 #### func (*LkkEncrypt) Base64Encode 1196 1197 ```go 1198 func (ke *LkkEncrypt) Base64Encode(str []byte) []byte 1199 ``` 1200 Base64Encode 使用 MIME base64 对数据进行编码. 1201 1202 #### func (*LkkEncrypt) Base64UrlDecode 1203 1204 ```go 1205 func (ke *LkkEncrypt) Base64UrlDecode(data []byte) ([]byte, error) 1206 ``` 1207 Base64UrlDecode url安全的Base64Decode. 1208 1209 #### func (*LkkEncrypt) Base64UrlEncode 1210 1211 ```go 1212 func (ke *LkkEncrypt) Base64UrlEncode(source []byte) []byte 1213 ``` 1214 Base64UrlSafeEncode url安全的Base64Encode,没有'/'和'+'及结尾的'=' . 1215 1216 #### func (*LkkEncrypt) EasyDecrypt 1217 1218 ```go 1219 func (ke *LkkEncrypt) EasyDecrypt(val, key []byte) []byte 1220 ``` 1221 EasyDecrypt 简单解密. val为待解密的字符串,key为密钥. 1222 1223 #### func (*LkkEncrypt) EasyEncrypt 1224 1225 ```go 1226 func (ke *LkkEncrypt) EasyEncrypt(data, key []byte) []byte 1227 ``` 1228 EasyEncrypt 简单加密. data为要加密的原字符串,key为密钥. 1229 1230 #### func (*LkkEncrypt) GenerateRsaKeys 1231 1232 ```go 1233 func (ke *LkkEncrypt) GenerateRsaKeys(bits int) (private []byte, public []byte, err error) 1234 ``` 1235 GenerateRsaKeys 生成RSA密钥对.bits为密钥位数,通常为1024或2048. 1236 1237 #### func (*LkkEncrypt) HmacShaX 1238 1239 ```go 1240 func (ke *LkkEncrypt) HmacShaX(data, secret []byte, x uint16) []byte 1241 ``` 1242 HmacShaX HmacSHA-x加密,x为1/256/512 . 1243 1244 #### func (*LkkEncrypt) PasswordHash 1245 1246 ```go 1247 func (ke *LkkEncrypt) PasswordHash(password []byte, costs ...int) ([]byte, error) 1248 ``` 1249 PasswordHash 创建密码的散列值;costs为算法的cost,范围4~31,默认10;注意:值越大越耗时. 1250 1251 #### func (*LkkEncrypt) PasswordVerify 1252 1253 ```go 1254 func (ke *LkkEncrypt) PasswordVerify(password, hash []byte) bool 1255 ``` 1256 PasswordVerify 验证密码是否和散列值匹配. 1257 1258 #### func (*LkkEncrypt) RsaPrivateDecrypt 1259 1260 ```go 1261 func (ke *LkkEncrypt) RsaPrivateDecrypt(cipherText, privateKey []byte) ([]byte, error) 1262 ``` 1263 RsaPrivateDecrypt RSA私钥解密.比加密耗时. cipherText为密文,privateKey为私钥. 1264 1265 #### func (*LkkEncrypt) RsaPrivateEncrypt 1266 1267 ```go 1268 func (ke *LkkEncrypt) RsaPrivateEncrypt(clearText, privateKey []byte) ([]byte, error) 1269 ``` 1270 RsaPrivateEncrypt RSA私钥加密.比解密耗时. clearText为明文,privateKey为私钥. 1271 1272 #### func (*LkkEncrypt) RsaPublicDecrypt 1273 1274 ```go 1275 func (ke *LkkEncrypt) RsaPublicDecrypt(cipherText, publicKey []byte) ([]byte, error) 1276 ``` 1277 RsaPublicDecrypt RSA公钥解密. cipherText为密文,publicKey为公钥. 1278 1279 #### func (*LkkEncrypt) RsaPublicEncrypt 1280 1281 ```go 1282 func (ke *LkkEncrypt) RsaPublicEncrypt(clearText, publicKey []byte) ([]byte, error) 1283 ``` 1284 RsaPublicEncrypt RSA公钥加密. clearText为明文,publicKey为公钥. 1285 1286 #### type LkkFile 1287 1288 ```go 1289 type LkkFile byte 1290 ``` 1291 1292 LkkFile is the receiver of file utilities 1293 1294 #### func (*LkkFile) AbsPath 1295 1296 ```go 1297 func (kf *LkkFile) AbsPath(fpath string) string 1298 ``` 1299 AbsPath 获取绝对路径,path可允许不存在. 1300 1301 #### func (*LkkFile) AppendFile 1302 1303 ```go 1304 func (kf *LkkFile) AppendFile(fpath string, data []byte) error 1305 ``` 1306 AppendFile 插入文件内容. 1307 1308 #### func (*LkkFile) Basename 1309 1310 ```go 1311 func (kf *LkkFile) Basename(fpath string) string 1312 ``` 1313 Basename 返回路径中的文件名部分. 1314 1315 #### func (*LkkFile) ChmodBatch 1316 1317 ```go 1318 func (kf *LkkFile) ChmodBatch(fpath string, filemode, dirmode os.FileMode) (res bool) 1319 ``` 1320 ChmodBatch 批量改变路径权限模式(包括子目录和所属文件).filemode为文件权限模式,dirmode为目录权限模式. 1321 1322 #### func (*LkkFile) CopyDir 1323 1324 ```go 1325 func (kf *LkkFile) CopyDir(source string, dest string, cover LkkFileCover) (int64, error) 1326 ``` 1327 CopyDir 拷贝源目录到目标目录,cover为枚举(FILE_COVER_ALLOW、FILE_COVER_IGNORE、FILE_COVER_DENY). 1328 1329 #### func (*LkkFile) CopyFile 1330 1331 ```go 1332 func (kf *LkkFile) CopyFile(source string, dest string, cover LkkFileCover) (int64, error) 1333 ``` 1334 CopyFile 1335 拷贝源文件到目标文件,cover为枚举(FILE_COVER_ALLOW、FILE_COVER_IGNORE、FILE_COVER_DENY). 1336 1337 #### func (*LkkFile) CopyLink 1338 1339 ```go 1340 func (kf *LkkFile) CopyLink(source string, dest string) error 1341 ``` 1342 CopyLink 拷贝链接. 1343 1344 #### func (*LkkFile) CountLines 1345 1346 ```go 1347 func (kf *LkkFile) CountLines(fpath string, buffLength int) (int, error) 1348 ``` 1349 CountLines 统计文件行数.buffLength为缓冲长度,kb. 1350 1351 #### func (*LkkFile) DelDir 1352 1353 ```go 1354 func (kf *LkkFile) DelDir(dir string, delRoot bool) error 1355 ``` 1356 DelDir 删除目录;delRoot为true时连该目录一起删除;为false时只清空该目录. 1357 1358 #### func (*LkkFile) DirSize 1359 1360 ```go 1361 func (kf *LkkFile) DirSize(fpath string) int64 1362 ``` 1363 DirSize 获取目录大小(bytes字节). 1364 1365 #### func (*LkkFile) Dirname 1366 1367 ```go 1368 func (kf *LkkFile) Dirname(fpath string) string 1369 ``` 1370 Dirname 返回路径中的目录部分,注意空路径或无目录的返回"." . 1371 1372 #### func (*LkkFile) FastCopy 1373 1374 ```go 1375 func (kf *LkkFile) FastCopy(source string, dest string) (int64, error) 1376 ``` 1377 FastCopy 快速拷贝源文件到目标文件,不做安全检查. 1378 1379 #### func (*LkkFile) FileSize 1380 1381 ```go 1382 func (kf *LkkFile) FileSize(fpath string) int64 1383 ``` 1384 FileSize 获取文件大小(bytes字节),注意:文件不存在或无法访问返回-1 . 1385 1386 #### func (*LkkFile) FileTree 1387 1388 ```go 1389 func (kf *LkkFile) FileTree(fpath string, ftype LkkFileTree, recursive bool, filters ...FileFilter) []string 1390 ``` 1391 FileTree 获取目录的文件树列表. ftype为枚举(FILE_TREE_ALL、FILE_TREE_DIR、FILE_TREE_FILE); 1392 recursive为是否递归; filters为一个或多个文件过滤器函数,FileFilter类型. 1393 1394 #### func (*LkkFile) FormatDir 1395 1396 ```go 1397 func (kf *LkkFile) FormatDir(fpath string) string 1398 ``` 1399 FormatDir 格式化路径,将"\","//"替换为"/",且以"/"结尾. 1400 1401 #### func (*LkkFile) GetExt 1402 1403 ```go 1404 func (kf *LkkFile) GetExt(fpath string) string 1405 ``` 1406 GetExt 获取文件的小写扩展名,不包括点"." . 1407 1408 #### func (*LkkFile) GetFileMode 1409 1410 ```go 1411 func (kf *LkkFile) GetFileMode(fpath string) (os.FileMode, error) 1412 ``` 1413 GetFileMode 获取路径的权限模式. 1414 1415 #### func (*LkkFile) GetMime 1416 1417 ```go 1418 func (kf *LkkFile) GetMime(fpath string, fast bool) string 1419 ``` 1420 GetMime 获取文件mime类型;fast为true时根据后缀快速获取;为false时读取文件头获取. 1421 1422 #### func (*LkkFile) GetModTime 1423 1424 ```go 1425 func (kf *LkkFile) GetModTime(fpath string) (res int64) 1426 ``` 1427 GetModTime 获取文件的修改时间戳,秒. 1428 1429 #### func (*LkkFile) Glob 1430 1431 ```go 1432 func (kf *LkkFile) Glob(pattern string) ([]string, error) 1433 ``` 1434 Glob 寻找与模式匹配的文件路径. 1435 1436 #### func (*LkkFile) Img2Base64 1437 1438 ```go 1439 func (kf *LkkFile) Img2Base64(fpath string) (string, error) 1440 ``` 1441 Img2Base64 读取图片文件,并转换为base64字符串. 1442 1443 #### func (*LkkFile) IsBinary 1444 1445 ```go 1446 func (kf *LkkFile) IsBinary(fpath string) bool 1447 ``` 1448 IsBinary 是否二进制文件(且存在). 1449 1450 #### func (*LkkFile) IsDir 1451 1452 ```go 1453 func (kf *LkkFile) IsDir(fpath string) bool 1454 ``` 1455 IsDir 是否目录(且存在). 1456 1457 #### func (*LkkFile) IsExecutable 1458 1459 ```go 1460 func (kf *LkkFile) IsExecutable(fpath string) bool 1461 ``` 1462 IsExecutable 是否可执行文件. 1463 1464 #### func (*LkkFile) IsExist 1465 1466 ```go 1467 func (kf *LkkFile) IsExist(fpath string) bool 1468 ``` 1469 IsExist 路径(文件/目录)是否存在. 1470 1471 #### func (*LkkFile) IsFile 1472 1473 ```go 1474 func (kf *LkkFile) IsFile(fpath string, ftype ...LkkFileType) (res bool) 1475 ``` 1476 IsFile 是否(某类型)文件,且存在. 1477 ftype为枚举(FILE_TYPE_ANY、FILE_TYPE_LINK、FILE_TYPE_REGULAR、FILE_TYPE_COMMON),默认FILE_TYPE_ANY; 1478 1479 #### func (*LkkFile) IsImg 1480 1481 ```go 1482 func (kf *LkkFile) IsImg(fpath string) bool 1483 ``` 1484 IsImg 是否图片文件(仅检查后缀). 1485 1486 #### func (*LkkFile) IsLink 1487 1488 ```go 1489 func (kf *LkkFile) IsLink(fpath string) bool 1490 ``` 1491 IsLink 是否链接文件(且存在). 1492 1493 #### func (*LkkFile) IsReadable 1494 1495 ```go 1496 func (kf *LkkFile) IsReadable(fpath string) bool 1497 ``` 1498 IsReadable 路径是否可读. 1499 1500 #### func (*LkkFile) IsWritable 1501 1502 ```go 1503 func (kf *LkkFile) IsWritable(fpath string) bool 1504 ``` 1505 IsWritable 路径是否可写. 1506 1507 #### func (*LkkFile) IsZip 1508 1509 ```go 1510 func (kf *LkkFile) IsZip(fpath string) bool 1511 ``` 1512 IsZip 是否zip文件. 1513 1514 #### func (*LkkFile) Md5 1515 1516 ```go 1517 func (kf *LkkFile) Md5(fpath string, length uint8) (string, error) 1518 ``` 1519 Md5 获取文件md5值,length指定结果长度32/16. 1520 1521 #### func (*LkkFile) Mkdir 1522 1523 ```go 1524 func (kf *LkkFile) Mkdir(fpath string, mode os.FileMode) error 1525 ``` 1526 Mkdir 新建目录,允许多级目录. 1527 1528 #### func (*LkkFile) Pathinfo 1529 1530 ```go 1531 func (kf *LkkFile) Pathinfo(fpath string, options int) map[string]string 1532 ``` 1533 Pathinfo 获取文件路径的信息,options的值为-1: all; 1: dirname; 2: basename; 4: extension; 8: 1534 filename. 1535 1536 #### func (*LkkFile) ReadFile 1537 1538 ```go 1539 func (kf *LkkFile) ReadFile(fpath string) ([]byte, error) 1540 ``` 1541 ReadFile 读取文件内容. 1542 1543 #### func (*LkkFile) ReadFirstLine 1544 1545 ```go 1546 func (kf *LkkFile) ReadFirstLine(fpath string) string 1547 ``` 1548 ReadFirstLine 读取文件首行. 1549 1550 #### func (*LkkFile) ReadInArray 1551 1552 ```go 1553 func (kf *LkkFile) ReadInArray(fpath string) ([]string, error) 1554 ``` 1555 ReadInArray 把整个文件读入一个数组中,每行作为一个元素. 1556 1557 #### func (*LkkFile) ReadLastLine 1558 1559 ```go 1560 func (kf *LkkFile) ReadLastLine(fpath string) string 1561 ``` 1562 ReadLastLine 读取文件末行. 1563 1564 #### func (*LkkFile) RealPath 1565 1566 ```go 1567 func (kf *LkkFile) RealPath(fpath string) string 1568 ``` 1569 RealPath 返回规范化的真实绝对路径名,path必须存在.若路径不存在则返回空字符串. 1570 1571 #### func (*LkkFile) Rename 1572 1573 ```go 1574 func (kf *LkkFile) Rename(oldname, newname string) error 1575 ``` 1576 Rename 重命名文件或目录. 1577 1578 #### func (*LkkFile) SafeFileName 1579 1580 ```go 1581 func (kf *LkkFile) SafeFileName(str string) string 1582 ``` 1583 SafeFileName 将文件名转换为安全可用的字符串. 1584 1585 #### func (*LkkFile) ShaX 1586 1587 ```go 1588 func (kf *LkkFile) ShaX(fpath string, x uint16) (string, error) 1589 ``` 1590 ShaX 计算文件的 shaX 散列值,x为1/256/512. 1591 1592 #### func (*LkkFile) TarGz 1593 1594 ```go 1595 func (kf *LkkFile) TarGz(src string, dstTar string, ignorePatterns ...string) (bool, error) 1596 ``` 1597 TarGz 打包压缩tar.gz;src为源文件或目录,dstTar为打包的路径名,ignorePatterns为要忽略的文件正则. 1598 1599 #### func (*LkkFile) Touch 1600 1601 ```go 1602 func (kf *LkkFile) Touch(fpath string, size int64) bool 1603 ``` 1604 Touch 快速创建指定大小的文件,size为字节. 1605 1606 #### func (*LkkFile) UnTarGz 1607 1608 ```go 1609 func (kf *LkkFile) UnTarGz(srcTar, dstDir string) (bool, error) 1610 ``` 1611 UnTarGz 将tar.gz文件解压缩;srcTar为压缩包,dstDir为解压目录. 1612 1613 #### func (*LkkFile) UnZip 1614 1615 ```go 1616 func (kf *LkkFile) UnZip(srcZip, dstDir string) (bool, error) 1617 ``` 1618 UnZip 解压zip文件.srcZip为zip文件路径,dstDir为解压目录. 1619 1620 #### func (*LkkFile) Unlink 1621 1622 ```go 1623 func (kf *LkkFile) Unlink(fpath string) error 1624 ``` 1625 Unlink 删除文件. 1626 1627 #### func (*LkkFile) WriteFile 1628 1629 ```go 1630 func (kf *LkkFile) WriteFile(fpath string, data []byte, perm ...os.FileMode) error 1631 ``` 1632 WriteFile 将内容写入文件. fpath为文件路径,data为内容,perm为权限. 1633 1634 #### func (*LkkFile) Zip 1635 1636 ```go 1637 func (kf *LkkFile) Zip(dst string, fpaths ...string) (bool, error) 1638 ``` 1639 Zip 将文件目录进行zip打包.fpaths为文件或目录的路径. 1640 1641 #### type LkkFileCover 1642 1643 ```go 1644 type LkkFileCover int8 1645 ``` 1646 1647 LkkFileCover 枚举类型,文件是否覆盖 1648 1649 #### type LkkFileTree 1650 1651 ```go 1652 type LkkFileTree uint8 1653 ``` 1654 1655 LkkFileTree 枚举类型,文件树查找类型 1656 1657 #### type LkkFileType 1658 1659 ```go 1660 type LkkFileType uint8 1661 ``` 1662 1663 LkkFileType 枚举类型,文件类型 1664 1665 #### type LkkNumber 1666 1667 ```go 1668 type LkkNumber byte 1669 ``` 1670 1671 LkkNumber is the receiver of number utilities 1672 1673 #### func (*LkkNumber) AbsFloat 1674 1675 ```go 1676 func (kn *LkkNumber) AbsFloat(number float64) float64 1677 ``` 1678 AbsFloat 浮点型取绝对值. 1679 1680 #### func (*LkkNumber) AbsInt 1681 1682 ```go 1683 func (kn *LkkNumber) AbsInt(number int64) int64 1684 ``` 1685 AbsInt 整型取绝对值. 1686 1687 #### func (*LkkNumber) Average 1688 1689 ```go 1690 func (kn *LkkNumber) Average(nums ...interface{}) (res float64) 1691 ``` 1692 Average 对任意类型序列中的数值类型求平均值,忽略非数值的. 1693 1694 #### func (*LkkNumber) AverageFloat64 1695 1696 ```go 1697 func (kn *LkkNumber) AverageFloat64(nums ...float64) (res float64) 1698 ``` 1699 AverageFloat64 对浮点数序列求平均值. 1700 1701 #### func (*LkkNumber) AverageInt 1702 1703 ```go 1704 func (kn *LkkNumber) AverageInt(nums ...int) (res float64) 1705 ``` 1706 AverageInt 对整数序列求平均值. 1707 1708 #### func (*LkkNumber) ByteFormat 1709 1710 ```go 1711 func (kn *LkkNumber) ByteFormat(size float64, decimal uint8, delimiter string) string 1712 ``` 1713 ByteFormat 格式化文件比特大小. size为文件大小,decimal为要保留的小数位数,delimiter为数字和单位间的分隔符. 1714 1715 #### func (*LkkNumber) Ceil 1716 1717 ```go 1718 func (kn *LkkNumber) Ceil(value float64) float64 1719 ``` 1720 Ceil 向上取整. 1721 1722 #### func (*LkkNumber) Exp 1723 1724 ```go 1725 func (kn *LkkNumber) Exp(x float64) float64 1726 ``` 1727 Exp 计算 e 的指数. 1728 1729 #### func (*LkkNumber) Expm1 1730 1731 ```go 1732 func (kn *LkkNumber) Expm1(x float64) float64 1733 ``` 1734 Expm1 返回 exp(number) - 1,甚至当 number 的值接近零也能计算出准确结果. 1735 1736 #### func (*LkkNumber) FloatEqual 1737 1738 ```go 1739 func (kn *LkkNumber) FloatEqual(f1 float64, f2 float64, decimal ...int) bool 1740 ``` 1741 FloatEqual 比较两个浮点数是否相等.decimal为小数精确位数. 1742 1743 #### func (*LkkNumber) Floor 1744 1745 ```go 1746 func (kn *LkkNumber) Floor(value float64) float64 1747 ``` 1748 Floor 向下取整. 1749 1750 #### func (*LkkNumber) GeoDistance 1751 1752 ```go 1753 func (kn *LkkNumber) GeoDistance(lng1, lat1, lng2, lat2 float64) float64 1754 ``` 1755 GeoDistance 获取地理距离/米. 参数分别为两点的经度和纬度.lat:-90~90,lng:-180~180. 1756 1757 #### func (*LkkNumber) InRange 1758 1759 ```go 1760 func (kn *LkkNumber) InRange(value interface{}, left interface{}, right interface{}) bool 1761 ``` 1762 InRange 数值是否在某个范围内,将自动转换类型再比较. 1763 1764 #### func (*LkkNumber) InRangeFloat32 1765 1766 ```go 1767 func (kn *LkkNumber) InRangeFloat32(value, left, right float32) bool 1768 ``` 1769 InRangeFloat32 数值是否在2个32位浮点数范围内. 1770 1771 #### func (*LkkNumber) InRangeFloat64 1772 1773 ```go 1774 func (kn *LkkNumber) InRangeFloat64(value, left, right float64) bool 1775 ``` 1776 InRangeFloat64 数值是否在2个64位浮点数范围内. 1777 1778 #### func (*LkkNumber) InRangeInt 1779 1780 ```go 1781 func (kn *LkkNumber) InRangeInt(value, left, right int) bool 1782 ``` 1783 InRangeInt 数值是否在2个整数范围内. 1784 1785 #### func (*LkkNumber) IsEven 1786 1787 ```go 1788 func (kn *LkkNumber) IsEven(val int) bool 1789 ``` 1790 IsEven 变量是否偶数. 1791 1792 #### func (*LkkNumber) IsNan 1793 1794 ```go 1795 func (kn *LkkNumber) IsNan(val float64) bool 1796 ``` 1797 IsNan 是否为“非数值”. 1798 1799 #### func (*LkkNumber) IsNatural 1800 1801 ```go 1802 func (kn *LkkNumber) IsNatural(value float64) bool 1803 ``` 1804 IsNatural 数值是否为自然数. 1805 1806 #### func (*LkkNumber) IsNegative 1807 1808 ```go 1809 func (kn *LkkNumber) IsNegative(value float64) bool 1810 ``` 1811 IsNegative 数值是否为负数. 1812 1813 #### func (*LkkNumber) IsNonNegative 1814 1815 ```go 1816 func (kn *LkkNumber) IsNonNegative(value float64) bool 1817 ``` 1818 IsNonNegative 数值是否为非负数. 1819 1820 #### func (*LkkNumber) IsNonPositive 1821 1822 ```go 1823 func (kn *LkkNumber) IsNonPositive(value float64) bool 1824 ``` 1825 IsNonPositive 数值是否为非正数. 1826 1827 #### func (*LkkNumber) IsOdd 1828 1829 ```go 1830 func (kn *LkkNumber) IsOdd(val int) bool 1831 ``` 1832 IsOdd 变量是否奇数. 1833 1834 #### func (*LkkNumber) IsPositive 1835 1836 ```go 1837 func (kn *LkkNumber) IsPositive(value float64) bool 1838 ``` 1839 IsPositive 数值是否为正数. 1840 1841 #### func (*LkkNumber) IsWhole 1842 1843 ```go 1844 func (kn *LkkNumber) IsWhole(value float64) bool 1845 ``` 1846 IsWhole 数值是否为整数. 1847 1848 #### func (*LkkNumber) Max 1849 1850 ```go 1851 func (kn *LkkNumber) Max(nums ...interface{}) (res float64) 1852 ``` 1853 Max 取出任意类型中数值类型的最大值,无数值类型则为0. 1854 1855 #### func (*LkkNumber) MaxFloat64 1856 1857 ```go 1858 func (kn *LkkNumber) MaxFloat64(nums ...float64) (res float64) 1859 ``` 1860 MaxFloat64 64位浮点数序列求最大值. 1861 1862 #### func (*LkkNumber) MaxInt 1863 1864 ```go 1865 func (kn *LkkNumber) MaxInt(nums ...int) (res int) 1866 ``` 1867 MaxInt 整数序列求最大值. 1868 1869 #### func (*LkkNumber) Min 1870 1871 ```go 1872 func (kn *LkkNumber) Min(nums ...interface{}) (res float64) 1873 ``` 1874 Min 取出任意类型中数值类型的最小值,无数值类型则为0. 1875 1876 #### func (*LkkNumber) MinFloat64 1877 1878 ```go 1879 func (kn *LkkNumber) MinFloat64(nums ...float64) (res float64) 1880 ``` 1881 MinFloat64 64位浮点数序列求最小值. 1882 1883 #### func (*LkkNumber) MinInt 1884 1885 ```go 1886 func (kn *LkkNumber) MinInt(nums ...int) (res int) 1887 ``` 1888 MinInt 整数序列求最小值. 1889 1890 #### func (*LkkNumber) NumSign 1891 1892 ```go 1893 func (kn *LkkNumber) NumSign(value float64) float64 1894 ``` 1895 NumSign 返回数值的符号.值>0为1,<0为-1,其他为0. 1896 1897 #### func (*LkkNumber) NumberFormat 1898 1899 ```go 1900 func (kn *LkkNumber) NumberFormat(number float64, decimal uint8, point, thousand string) string 1901 ``` 1902 NumberFormat 以千位分隔符方式格式化一个数字. 1903 decimal为要保留的小数位数,point为小数点显示的字符,thousand为千位分隔符显示的字符. 1904 1905 #### func (*LkkNumber) Percent 1906 1907 ```go 1908 func (kn *LkkNumber) Percent(val, total interface{}) float64 1909 ``` 1910 Percent 返回百分比(val/total). 1911 1912 #### func (*LkkNumber) Pi 1913 1914 ```go 1915 func (kn *LkkNumber) Pi() float64 1916 ``` 1917 Pi 得到圆周率值. 1918 1919 #### func (*LkkNumber) Pow 1920 1921 ```go 1922 func (kn *LkkNumber) Pow(x, y float64) float64 1923 ``` 1924 Pow 指数表达式. 1925 1926 #### func (*LkkNumber) Rand 1927 1928 ```go 1929 func (kn *LkkNumber) Rand(min, max int) int 1930 ``` 1931 Rand RandInt的别名. 1932 1933 #### func (*LkkNumber) RandFloat64 1934 1935 ```go 1936 func (kn *LkkNumber) RandFloat64(min, max float64) float64 1937 ``` 1938 RandFloat64 生产一个随机float64整数. 1939 1940 #### func (*LkkNumber) RandInt 1941 1942 ```go 1943 func (kn *LkkNumber) RandInt(min, max int) int 1944 ``` 1945 RandInt 产生一个随机int整数. 1946 1947 #### func (*LkkNumber) RandInt64 1948 1949 ```go 1950 func (kn *LkkNumber) RandInt64(min, max int64) int64 1951 ``` 1952 RandInt64 生产一个随机int64整数. 1953 1954 #### func (*LkkNumber) Range 1955 1956 ```go 1957 func (kn *LkkNumber) Range(min, max int) []int 1958 ``` 1959 Range 根据范围创建数组,包含指定的元素. 1960 1961 #### func (*LkkNumber) Round 1962 1963 ```go 1964 func (kn *LkkNumber) Round(value float64) float64 1965 ``` 1966 Round 对浮点数(的整数)进行四舍五入. 1967 1968 #### func (*LkkNumber) RoundPlus 1969 1970 ```go 1971 func (kn *LkkNumber) RoundPlus(value float64, precision int8) float64 1972 ``` 1973 RoundPlus 对指定的小数位进行四舍五入. precision为小数位数. 1974 1975 #### func (*LkkNumber) Sum 1976 1977 ```go 1978 func (kn *LkkNumber) Sum(nums ...interface{}) (res float64) 1979 ``` 1980 Sum 对任意类型序列中的数值类型求和,忽略非数值的. 1981 1982 #### func (*LkkNumber) SumFloat64 1983 1984 ```go 1985 func (kn *LkkNumber) SumFloat64(nums ...float64) float64 1986 ``` 1987 SumFloat64 浮点数求和. 1988 1989 #### func (*LkkNumber) SumInt 1990 1991 ```go 1992 func (kn *LkkNumber) SumInt(nums ...int) int 1993 ``` 1994 SumInt 整数求和. 1995 1996 #### type LkkOS 1997 1998 ```go 1999 type LkkOS byte 2000 ``` 2001 2002 LkkOS is the receiver of OS utilities 2003 2004 #### func (*LkkOS) Chdir 2005 2006 ```go 2007 func (ko *LkkOS) Chdir(dir string) error 2008 ``` 2009 Chdir 改变/进入新的工作目录. 2010 2011 #### func (*LkkOS) Chmod 2012 2013 ```go 2014 func (ko *LkkOS) Chmod(filename string, mode os.FileMode) bool 2015 ``` 2016 Chmod 改变文件模式. 2017 2018 #### func (*LkkOS) Chown 2019 2020 ```go 2021 func (ko *LkkOS) Chown(filename string, uid, gid int) bool 2022 ``` 2023 Chown 改变文件的所有者. 2024 2025 #### func (*LkkOS) ClientIp 2026 2027 ```go 2028 func (ko *LkkOS) ClientIp(req *http.Request) string 2029 ``` 2030 ClientIp 获取客户端真实IP,req为http请求. 2031 2032 #### func (*LkkOS) CpuUsage 2033 2034 ```go 2035 func (ko *LkkOS) CpuUsage() (user, idle, total uint64) 2036 ``` 2037 CpuUsage 获取CPU使用率(仅支持linux),单位jiffies(节拍数). user为用户态(用户进程)的运行时间, idle为空闲时间, 2038 total为累计时间. 2039 2040 #### func (*LkkOS) DiskUsage 2041 2042 ```go 2043 func (ko *LkkOS) DiskUsage(path string) (used, free, total uint64) 2044 ``` 2045 DiskUsage 获取磁盘/目录使用情况,单位字节.参数path为目录. used为已用, free为空闲, total为总数. 2046 2047 #### func (*LkkOS) Exec 2048 2049 ```go 2050 func (ko *LkkOS) Exec(command string) (retInt int, outStr, errStr []byte) 2051 ``` 2052 Exec 执行一个外部命令. retInt为1时失败,为0时成功;outStr为执行命令的输出;errStr为错误输出. 命令如 "ls -a" 2053 "/bin/bash -c \"ls -a\"" 2054 2055 #### func (*LkkOS) ForceGC 2056 2057 ```go 2058 func (ko *LkkOS) ForceGC() 2059 ``` 2060 ForceGC 强制手动GC垃圾回收(阻塞). 2061 2062 #### func (*LkkOS) GetBiosInfo 2063 2064 ```go 2065 func (ko *LkkOS) GetBiosInfo() *BiosInfo 2066 ``` 2067 GetBiosInfo 获取BIOS信息. 2068 2069 #### func (*LkkOS) GetBoardInfo 2070 2071 ```go 2072 func (ko *LkkOS) GetBoardInfo() *BoardInfo 2073 ``` 2074 GetBoardInfo 获取Board信息. 2075 2076 #### func (*LkkOS) GetCpuInfo 2077 2078 ```go 2079 func (ko *LkkOS) GetCpuInfo() *CpuInfo 2080 ``` 2081 GetCpuInfo 获取CPU信息. 2082 2083 #### func (*LkkOS) GetEndian 2084 2085 ```go 2086 func (ko *LkkOS) GetEndian() binary.ByteOrder 2087 ``` 2088 GetEndian 获取系统字节序类型,小端返回binary.LittleEndian,大端返回binary.BigEndian . 2089 2090 #### func (*LkkOS) GetHostByIp 2091 2092 ```go 2093 func (ko *LkkOS) GetHostByIp(ipAddress string) (string, error) 2094 ``` 2095 GetHostByIp 获取指定的IP地址对应的主机名. 2096 2097 #### func (*LkkOS) GetIPs 2098 2099 ```go 2100 func (ko *LkkOS) GetIPs() (ips []string) 2101 ``` 2102 GetIPs 获取本机的IP列表. 2103 2104 #### func (*LkkOS) GetIpByHostname 2105 2106 ```go 2107 func (ko *LkkOS) GetIpByHostname(hostname string) (string, error) 2108 ``` 2109 GetIpByHostname 返回主机名对应的 IPv4地址. 2110 2111 #### func (*LkkOS) GetIpsByDomain 2112 2113 ```go 2114 func (ko *LkkOS) GetIpsByDomain(domain string) ([]string, error) 2115 ``` 2116 GetIpsByHost 获取互联网域名/主机名对应的 IPv4 地址列表. 2117 2118 #### func (*LkkOS) GetMacAddrs 2119 2120 ```go 2121 func (ko *LkkOS) GetMacAddrs() (macAddrs []string) 2122 ``` 2123 GetMacAddrs 获取本机的Mac网卡地址列表. 2124 2125 #### func (*LkkOS) GetPidByPort 2126 2127 ```go 2128 func (ko *LkkOS) GetPidByPort(port int) (pid int) 2129 ``` 2130 GetPidByPort 根据端口号获取监听的进程PID. 2131 2132 #### func (*LkkOS) GetProcessExecPath 2133 2134 ```go 2135 func (ko *LkkOS) GetProcessExecPath(pid int) string 2136 ``` 2137 GetProcessExecPath 根据PID获取进程的执行路径. 2138 2139 #### func (*LkkOS) GetSystemInfo 2140 2141 ```go 2142 func (ko *LkkOS) GetSystemInfo() *SystemInfo 2143 ``` 2144 GetSystemInfo 获取系统运行信息. 2145 2146 #### func (*LkkOS) GetTempDir 2147 2148 ```go 2149 func (ko *LkkOS) GetTempDir() string 2150 ``` 2151 GetTempDir 返回用于临时文件的目录. 2152 2153 #### func (*LkkOS) Getcwd 2154 2155 ```go 2156 func (ko *LkkOS) Getcwd() (string, error) 2157 ``` 2158 Getcwd 取得当前工作目录(程序可能在任务中进行多次目录切换). 2159 2160 #### func (*LkkOS) Getenv 2161 2162 ```go 2163 func (ko *LkkOS) Getenv(varname string, def ...string) string 2164 ``` 2165 Getenv 获取一个环境变量的值.def为默认值. 2166 2167 #### func (*LkkOS) GoMemory 2168 2169 ```go 2170 func (ko *LkkOS) GoMemory() uint64 2171 ``` 2172 MemoryGetUsage 获取当前go程序的内存使用,返回字节数. 2173 2174 #### func (*LkkOS) HomeDir 2175 2176 ```go 2177 func (ko *LkkOS) HomeDir() (string, error) 2178 ``` 2179 HomeDir 获取当前用户的主目录(仅支持Unix-like system). 2180 2181 #### func (*LkkOS) Hostname 2182 2183 ```go 2184 func (ko *LkkOS) Hostname() (string, error) 2185 ``` 2186 Hostname 获取主机名. 2187 2188 #### func (*LkkOS) IsLinux 2189 2190 ```go 2191 func (ko *LkkOS) IsLinux() bool 2192 ``` 2193 IsLinux 当前操作系统是否Linux. 2194 2195 #### func (*LkkOS) IsLittleEndian 2196 2197 ```go 2198 func (ko *LkkOS) IsLittleEndian() bool 2199 ``` 2200 IsLittleEndian 系统字节序类型是否小端存储. 2201 2202 #### func (*LkkOS) IsMac 2203 2204 ```go 2205 func (ko *LkkOS) IsMac() bool 2206 ``` 2207 IsMac 当前操作系统是否Mac OS/X. 2208 2209 #### func (*LkkOS) IsPortOpen 2210 2211 ```go 2212 func (ko *LkkOS) IsPortOpen(host string, port interface{}, protocols ...string) bool 2213 ``` 2214 IsPortOpen 检查主机端口是否开放.protocols为协议名称,可选,默认tcp. 2215 2216 #### func (*LkkOS) IsPrivateIp 2217 2218 ```go 2219 func (ko *LkkOS) IsPrivateIp(address string) (bool, error) 2220 ``` 2221 IsPrivateIp 是否私有IP地址(ipv4/ipv6). 2222 2223 #### func (*LkkOS) IsProcessExists 2224 2225 ```go 2226 func (ko *LkkOS) IsProcessExists(pid int) (res bool) 2227 ``` 2228 IsProcessExists 进程是否存在. 2229 2230 #### func (*LkkOS) IsPublicIP 2231 2232 ```go 2233 func (ko *LkkOS) IsPublicIP(ip net.IP) bool 2234 ``` 2235 IsPublicIP 是否公网IP. 2236 2237 #### func (*LkkOS) IsWindows 2238 2239 ```go 2240 func (ko *LkkOS) IsWindows() bool 2241 ``` 2242 IsWindows 当前操作系统是否Windows. 2243 2244 #### func (*LkkOS) LocalIP 2245 2246 ```go 2247 func (ko *LkkOS) LocalIP() (string, error) 2248 ``` 2249 LocalIP 获取本机第一个NIC's IP. 2250 2251 #### func (*LkkOS) MemoryUsage 2252 2253 ```go 2254 func (ko *LkkOS) MemoryUsage(virtual bool) (used, free, total uint64) 2255 ``` 2256 MemoryUsage 获取内存使用率(仅支持linux),单位字节. 参数 virtual,是否取虚拟内存. used为已用, free为空闲, 2257 total为总数. 2258 2259 #### func (*LkkOS) OutboundIP 2260 2261 ```go 2262 func (ko *LkkOS) OutboundIP() (string, error) 2263 ``` 2264 OutboundIP 获取本机的出口IP. 2265 2266 #### func (*LkkOS) PrivateCIDR 2267 2268 ```go 2269 func (ko *LkkOS) PrivateCIDR() []*net.IPNet 2270 ``` 2271 PrivateCIDR 获取私有网段的CIDR(无类别域间路由). 2272 2273 #### func (*LkkOS) Pwd 2274 2275 ```go 2276 func (ko *LkkOS) Pwd() string 2277 ``` 2278 Pwd 获取当前程序运行所在的路径,注意和Getwd有所不同. 若当前执行的是链接文件,则会指向真实二进制程序的所在目录. 2279 2280 #### func (*LkkOS) Setenv 2281 2282 ```go 2283 func (ko *LkkOS) Setenv(varname, data string) error 2284 ``` 2285 Setenv 设置一个环境变量的值. 2286 2287 #### func (*LkkOS) System 2288 2289 ```go 2290 func (ko *LkkOS) System(command string) (retInt int, outStr, errStr []byte) 2291 ``` 2292 System 与Exec相同,但会同时打印标准输出和标准错误. 2293 2294 #### func (*LkkOS) TriggerGC 2295 2296 ```go 2297 func (ko *LkkOS) TriggerGC() 2298 ``` 2299 TriggerGC 触发GC(非阻塞). 2300 2301 #### type LkkPKCSType 2302 2303 ```go 2304 type LkkPKCSType int8 2305 ``` 2306 2307 LkkPKCSType 枚举类型,PKCS填充类型 2308 2309 #### type LkkPadType 2310 2311 ```go 2312 type LkkPadType uint8 2313 ``` 2314 2315 LkkPadType 枚举类型,字符串填充类型 2316 2317 #### type LkkRandString 2318 2319 ```go 2320 type LkkRandString uint8 2321 ``` 2322 2323 LkkRandString 枚举类型,随机字符串类型 2324 2325 #### type LkkString 2326 2327 ```go 2328 type LkkString byte 2329 ``` 2330 2331 LkkString is the receiver of string utilities 2332 2333 #### func (*LkkString) Addslashes 2334 2335 ```go 2336 func (ks *LkkString) Addslashes(str string) string 2337 ``` 2338 Addslashes 使用反斜线引用字符串. 2339 2340 #### func (*LkkString) AtWho 2341 2342 ```go 2343 func (ks *LkkString) AtWho(text string, minLen ...int) []string 2344 ``` 2345 AtWho 查找被@的用户名.minLen为用户名最小长度,默认5. 2346 2347 #### func (*LkkString) Big5ToUtf8 2348 2349 ```go 2350 func (ks *LkkString) Big5ToUtf8(s []byte) ([]byte, error) 2351 ``` 2352 Big5ToUtf8 BIG5转UTF-8编码. 2353 2354 #### func (*LkkString) Br2nl 2355 2356 ```go 2357 func (ks *LkkString) Br2nl(str string) string 2358 ``` 2359 Br2nl 将br标签转换为换行符. 2360 2361 #### func (*LkkString) Chr 2362 2363 ```go 2364 func (ks *LkkString) Chr(ascii int) string 2365 ``` 2366 Chr 返回相对应于 ascii 所指定的单个字符. 2367 2368 #### func (*LkkString) ChunkSplit 2369 2370 ```go 2371 func (ks *LkkString) ChunkSplit(str string, chunklen uint, end string) string 2372 ``` 2373 ChunkSplit 将字符串分割成小块.str为要分割的字符,chunklen为分割的尺寸,end为行尾序列符号. 2374 2375 #### func (*LkkString) ClearUrlPrefix 2376 2377 ```go 2378 func (ks *LkkString) ClearUrlPrefix(str string, prefix ...string) string 2379 ``` 2380 ClearUrlPrefix 清除URL的前缀; str为URL字符串,prefix为前缀,默认"/". 2381 2382 #### func (*LkkString) ClearUrlSuffix 2383 2384 ```go 2385 func (ks *LkkString) ClearUrlSuffix(str string, suffix ...string) string 2386 ``` 2387 ClearUrlSuffix 清除URL的后缀; str为URL字符串,suffix为后缀,默认"/". 2388 2389 #### func (*LkkString) ClosestWord 2390 2391 ```go 2392 func (ks *LkkString) ClosestWord(word string, searchs []string) (string, int) 2393 ``` 2394 ClosestWord 获取与原字符串相似度最高的字符串,以及它们的编辑距离. word为原字符串,searchs为待查找的字符串数组. 2395 2396 #### func (*LkkString) CountBase64Byte 2397 2398 ```go 2399 func (ks *LkkString) CountBase64Byte(str string) (res int) 2400 ``` 2401 CountBase64Byte 统计base64字符串大小,字节. 2402 2403 #### func (*LkkString) CountWords 2404 2405 ```go 2406 func (ks *LkkString) CountWords(str string) (int, map[string]int) 2407 ``` 2408 CountWords 统计字符串中单词的使用情况. 返回结果:单词总数;和一个字典,包含每个单词的单独统计. 因为没有分词,对中文尚未很好支持. 2409 2410 #### func (*LkkString) Crc32 2411 2412 ```go 2413 func (ks *LkkString) Crc32(str string) uint32 2414 ``` 2415 Crc32 计算一个字符串的 crc32 多项式. 2416 2417 #### func (*LkkString) DBC2SBC 2418 2419 ```go 2420 func (ks *LkkString) DBC2SBC(s string) string 2421 ``` 2422 DBC2SBC 半角转全角. 2423 2424 #### func (*LkkString) Dstrpos 2425 2426 ```go 2427 func (ks *LkkString) Dstrpos(str string, arr []string, chkCase bool) (bool, string) 2428 ``` 2429 Dstrpos 检查字符串str是否包含数组arr的元素之一,返回检查结果和匹配的字符串. chkCase为是否检查大小写. 2430 2431 #### func (*LkkString) EndsWith 2432 2433 ```go 2434 func (ks *LkkString) EndsWith(str, sub string, ignoreCase bool) bool 2435 ``` 2436 EndsWith 字符串str是否以sub结尾. 2437 2438 #### func (*LkkString) Explode 2439 2440 ```go 2441 func (ks *LkkString) Explode(str string, delimiters ...string) (res []string) 2442 ``` 2443 Explode 字符串分割.delimiters为分隔符,可选,支持多个. 2444 2445 #### func (*LkkString) FirstLetter 2446 2447 ```go 2448 func (ks *LkkString) FirstLetter(str string) string 2449 ``` 2450 FirstLetter 获取字符串首字母. 2451 2452 #### func (*LkkString) FormatUrl 2453 2454 ```go 2455 func (ks *LkkString) FormatUrl(str string) string 2456 ``` 2457 FormatUrl 格式化URL. 2458 2459 #### func (*LkkString) GbkToUtf8 2460 2461 ```go 2462 func (ks *LkkString) GbkToUtf8(s []byte) ([]byte, error) 2463 ``` 2464 GbkToUtf8 GBK转UTF-8编码. 2465 2466 #### func (*LkkString) GetDomain 2467 2468 ```go 2469 func (ks *LkkString) GetDomain(str string, isMains ...bool) string 2470 ``` 2471 GetDomain 从URL字符串中获取域名. 2472 可选参数isMains,默认为false,取完整域名;为true时,取主域名(如abc.test.com取test.com). 2473 2474 #### func (*LkkString) Gravatar 2475 2476 ```go 2477 func (ks *LkkString) Gravatar(email string, size uint16) string 2478 ``` 2479 Gravatar 获取Gravatar头像地址. 2480 2481 #### func (*LkkString) HasChinese 2482 2483 ```go 2484 func (ks *LkkString) HasChinese(str string) bool 2485 ``` 2486 HasChinese 字符串是否含有中文. 2487 2488 #### func (*LkkString) HasEnglish 2489 2490 ```go 2491 func (ks *LkkString) HasEnglish(str string) bool 2492 ``` 2493 HasEnglish 是否含有英文字符,HasLetter的别名. 2494 2495 #### func (*LkkString) HasFullWidth 2496 2497 ```go 2498 func (ks *LkkString) HasFullWidth(str string) bool 2499 ``` 2500 HasFullWidth 是否含有全角字符. 2501 2502 #### func (*LkkString) HasHalfWidth 2503 2504 ```go 2505 func (ks *LkkString) HasHalfWidth(str string) bool 2506 ``` 2507 HasHalfWidth 是否含有半角字符. 2508 2509 #### func (*LkkString) HasLetter 2510 2511 ```go 2512 func (ks *LkkString) HasLetter(str string) bool 2513 ``` 2514 HasLetter 字符串是否含有(英文)字母. 2515 2516 #### func (*LkkString) HasSpecialChar 2517 2518 ```go 2519 func (ks *LkkString) HasSpecialChar(str string) (res bool) 2520 ``` 2521 HasSpecialChar 字符串是否含有特殊字符. 2522 2523 #### func (*LkkString) HasWhitespace 2524 2525 ```go 2526 func (ks *LkkString) HasWhitespace(str string) bool 2527 ``` 2528 HasWhitespace 是否带有空白字符. 2529 2530 #### func (*LkkString) HideCard 2531 2532 ```go 2533 func (ks *LkkString) HideCard(card string) string 2534 ``` 2535 HideCard 隐藏证件号码. 2536 2537 #### func (*LkkString) HideMobile 2538 2539 ```go 2540 func (ks *LkkString) HideMobile(mobile string) string 2541 ``` 2542 HideMobile 隐藏手机号. 2543 2544 #### func (*LkkString) HideTrueName 2545 2546 ```go 2547 func (ks *LkkString) HideTrueName(name string) string 2548 ``` 2549 HideTrueName 隐藏真实名称(如姓名、账号、公司等). 2550 2551 #### func (*LkkString) Html2Text 2552 2553 ```go 2554 func (ks *LkkString) Html2Text(str string) string 2555 ``` 2556 Html2Text 将html转换为纯文本. 2557 2558 #### func (*LkkString) Htmlentities 2559 2560 ```go 2561 func (ks *LkkString) Htmlentities(str string) string 2562 ``` 2563 Htmlentities 将字符转换为 HTML 转义字符. 2564 2565 #### func (*LkkString) HtmlentityDecode 2566 2567 ```go 2568 func (ks *LkkString) HtmlentityDecode(str string) string 2569 ``` 2570 HtmlentityDecode 将HTML实体转换为它们对应的字符. 2571 2572 #### func (*LkkString) HttpBuildQuery 2573 2574 ```go 2575 func (ks *LkkString) HttpBuildQuery(queryData url.Values) string 2576 ``` 2577 HttpBuildQuery 根据参数生成 URL-encode 之后的请求字符串. 2578 2579 #### func (*LkkString) Img2Base64 2580 2581 ```go 2582 func (ks *LkkString) Img2Base64(content []byte, ext ...string) string 2583 ``` 2584 Img2Base64 将字符串转换为base64图片.ext为图片扩展名,默认jpg. 2585 2586 #### func (*LkkString) Index 2587 2588 ```go 2589 func (ks *LkkString) Index(str, sub string, ignoreCase bool) int 2590 ``` 2591 Index 查找子串sub在字符串str中第一次出现的位置,不存在则返回-1; ignoreCase为是否忽略大小写. 2592 2593 #### func (*LkkString) IsASCII 2594 2595 ```go 2596 func (ks *LkkString) IsASCII(str string) bool 2597 ``` 2598 IsASCII 是否IsASCII字符串. 2599 2600 #### func (*LkkString) IsAlphaNumeric 2601 2602 ```go 2603 func (ks *LkkString) IsAlphaNumeric(str string) bool 2604 ``` 2605 IsAlphaNumeric 是否字母或数字. 2606 2607 #### func (*LkkString) IsBase64 2608 2609 ```go 2610 func (ks *LkkString) IsBase64(str string) bool 2611 ``` 2612 IsBase64 是否base64字符串. 2613 2614 #### func (*LkkString) IsBase64Image 2615 2616 ```go 2617 func (ks *LkkString) IsBase64Image(str string) bool 2618 ``` 2619 IsBase64Image 是否base64编码的图片. 2620 2621 #### func (*LkkString) IsBlank 2622 2623 ```go 2624 func (ks *LkkString) IsBlank(str string) bool 2625 ``` 2626 IsBlank 是否空(空白)字符. 2627 2628 #### func (*LkkString) IsChinese 2629 2630 ```go 2631 func (ks *LkkString) IsChinese(str string) bool 2632 ``` 2633 IsChinese 字符串是否全部中文. 2634 2635 #### func (*LkkString) IsChineseName 2636 2637 ```go 2638 func (ks *LkkString) IsChineseName(str string) bool 2639 ``` 2640 IsChineseName 字符串是否中文名称. 2641 2642 #### func (*LkkString) IsCreditNo 2643 2644 ```go 2645 func (ks *LkkString) IsCreditNo(str string) (bool, string) 2646 ``` 2647 IsCreditNo 检查是否(15或18位)身份证号码,并返回经校验的号码. 2648 2649 #### func (*LkkString) IsDNSName 2650 2651 ```go 2652 func (ks *LkkString) IsDNSName(str string) bool 2653 ``` 2654 IsDNSName 是否DNS名称. 2655 2656 #### func (*LkkString) IsDialString 2657 2658 ```go 2659 func (ks *LkkString) IsDialString(str string) bool 2660 ``` 2661 IsDialString 是否网络拨号字符串(形如127.0.0.1:80),用于net.Dial()检查. 2662 2663 #### func (*LkkString) IsEmail 2664 2665 ```go 2666 func (ks *LkkString) IsEmail(email string, validateHost bool) (bool, error) 2667 ``` 2668 IsEmail 检查字符串是否邮箱.参数validateTrue,是否验证邮箱主机的真实性. 2669 2670 #### func (*LkkString) IsEmpty 2671 2672 ```go 2673 func (ks *LkkString) IsEmpty(str string) bool 2674 ``` 2675 IsEmpty 字符串是否为空(包括空格). 2676 2677 #### func (*LkkString) IsEnglish 2678 2679 ```go 2680 func (ks *LkkString) IsEnglish(str string, letterCase LkkCaseSwitch) bool 2681 ``` 2682 IsEnglish 字符串是否纯英文.letterCase是否检查大小写,枚举值(CASE_NONE,CASE_LOWER,CASE_UPPER). 2683 2684 #### func (*LkkString) IsHexcolor 2685 2686 ```go 2687 func (ks *LkkString) IsHexcolor(str string) (bool, string) 2688 ``` 2689 IsHexcolor 检查是否十六进制颜色,并返回带"#"的修正值. 2690 2691 #### func (*LkkString) IsHost 2692 2693 ```go 2694 func (ks *LkkString) IsHost(str string) bool 2695 ``` 2696 IsHost 字符串是否主机名(IP或DNS名称). 2697 2698 #### func (*LkkString) IsIP 2699 2700 ```go 2701 func (ks *LkkString) IsIP(str string) bool 2702 ``` 2703 IsIP 检查字符串是否IP地址. 2704 2705 #### func (*LkkString) IsIPv4 2706 2707 ```go 2708 func (ks *LkkString) IsIPv4(str string) bool 2709 ``` 2710 IsIPv4 检查字符串是否IPv4地址. 2711 2712 #### func (*LkkString) IsIPv6 2713 2714 ```go 2715 func (ks *LkkString) IsIPv6(str string) bool 2716 ``` 2717 IsIPv6 检查字符串是否IPv6地址. 2718 2719 #### func (*LkkString) IsJSON 2720 2721 ```go 2722 func (ks *LkkString) IsJSON(str string) bool 2723 ``` 2724 IsJSON 字符串是否合法的json格式. 2725 2726 #### func (*LkkString) IsLetters 2727 2728 ```go 2729 func (ks *LkkString) IsLetters(str string) bool 2730 ``` 2731 IsLetters 字符串是否全(英文)字母组成. 2732 2733 #### func (*LkkString) IsLower 2734 2735 ```go 2736 func (ks *LkkString) IsLower(str string) bool 2737 ``` 2738 IsLower 字符串是否全部小写. 2739 2740 #### func (*LkkString) IsMACAddr 2741 2742 ```go 2743 func (ks *LkkString) IsMACAddr(str string) bool 2744 ``` 2745 IsMACAddr 是否MAC物理网卡地址. 2746 2747 #### func (*LkkString) IsMd5 2748 2749 ```go 2750 func (ks *LkkString) IsMd5(str string) bool 2751 ``` 2752 IsMd5 是否md5值. 2753 2754 #### func (*LkkString) IsMobilecn 2755 2756 ```go 2757 func (ks *LkkString) IsMobilecn(str string) bool 2758 ``` 2759 IsMobilecn 检查字符串是否中国大陆手机号. 2760 2761 #### func (*LkkString) IsMultibyte 2762 2763 ```go 2764 func (ks *LkkString) IsMultibyte(str string) bool 2765 ``` 2766 IsMultibyte 字符串是否含有多字节字符. 2767 2768 #### func (*LkkString) IsPhone 2769 2770 ```go 2771 func (ks *LkkString) IsPhone(str string) bool 2772 ``` 2773 IsPhone 是否电话号码(手机或固话). 2774 2775 #### func (*LkkString) IsPort 2776 2777 ```go 2778 func (ks *LkkString) IsPort(val interface{}) bool 2779 ``` 2780 IsPort 字符串或数字是否端口号. 2781 2782 #### func (*LkkString) IsRGBcolor 2783 2784 ```go 2785 func (ks *LkkString) IsRGBcolor(str string) bool 2786 ``` 2787 IsRGBcolor 检查字符串是否RGB颜色格式. 2788 2789 #### func (*LkkString) IsRsaPublicKey 2790 2791 ```go 2792 func (ks *LkkString) IsRsaPublicKey(str string, keylen int) bool 2793 ``` 2794 IsRsaPublicKey 检查字符串是否RSA的公钥,keylen为密钥长度. 2795 2796 #### func (*LkkString) IsSha1 2797 2798 ```go 2799 func (ks *LkkString) IsSha1(str string) bool 2800 ``` 2801 IsSha1 是否Sha1值. 2802 2803 #### func (*LkkString) IsSha256 2804 2805 ```go 2806 func (ks *LkkString) IsSha256(str string) bool 2807 ``` 2808 IsSha256 是否Sha256值. 2809 2810 #### func (*LkkString) IsSha512 2811 2812 ```go 2813 func (ks *LkkString) IsSha512(str string) bool 2814 ``` 2815 IsSha512 是否Sha512值. 2816 2817 #### func (*LkkString) IsTel 2818 2819 ```go 2820 func (ks *LkkString) IsTel(str string) bool 2821 ``` 2822 IsTel 是否固定电话或400/800电话. 2823 2824 #### func (*LkkString) IsUpper 2825 2826 ```go 2827 func (ks *LkkString) IsUpper(str string) bool 2828 ``` 2829 IsUpper 字符串是否全部大写. 2830 2831 #### func (*LkkString) IsUrl 2832 2833 ```go 2834 func (ks *LkkString) IsUrl(str string) bool 2835 ``` 2836 IsUrl 检查字符串是否URL. 2837 2838 #### func (*LkkString) IsUrlExists 2839 2840 ```go 2841 func (ks *LkkString) IsUrlExists(str string) bool 2842 ``` 2843 IsUrlExists 检查URL是否存在. 2844 2845 #### func (*LkkString) IsUtf8 2846 2847 ```go 2848 func (ks *LkkString) IsUtf8(str string) bool 2849 ``` 2850 IsUtf8 字符串是否UTF-8编码. 2851 2852 #### func (*LkkString) IsWhitespaces 2853 2854 ```go 2855 func (ks *LkkString) IsWhitespaces(str string) bool 2856 ``` 2857 IsWhitespaces 是否全部空白字符,不包括空字符串. 2858 2859 #### func (*LkkString) IsWord 2860 2861 ```go 2862 func (ks *LkkString) IsWord(str string) bool 2863 ``` 2864 IsWord 是否词语(不以下划线开头的中文、英文、数字、下划线). 2865 2866 #### func (*LkkString) JsonDecode 2867 2868 ```go 2869 func (ks *LkkString) JsonDecode(data []byte, val interface{}) error 2870 ``` 2871 JsonDecode 对 JSON 格式的字符串进行解码,注意val使用指针. 依赖库github.com/json-iterator/go. 2872 2873 #### func (*LkkString) JsonEncode 2874 2875 ```go 2876 func (ks *LkkString) JsonEncode(val interface{}) ([]byte, error) 2877 ``` 2878 JsonEncode 对变量进行 JSON 编码. 依赖库github.com/json-iterator/go. 2879 2880 #### func (*LkkString) Jsonp2Json 2881 2882 ```go 2883 func (ks *LkkString) Jsonp2Json(str string) (string, error) 2884 ``` 2885 Jsonp2Json 将jsonp转为json串. Example: forbar({a:"1",b:2}) to {"a":"1","b":2} 2886 2887 #### func (*LkkString) LastIndex 2888 2889 ```go 2890 func (ks *LkkString) LastIndex(str, sub string, ignoreCase bool) int 2891 ``` 2892 LastIndex 查找子串sub在字符串str中最后一次出现的位置,不存在则返回-1; ignoreCase为是否忽略大小写. 2893 2894 #### func (*LkkString) Lcfirst 2895 2896 ```go 2897 func (ks *LkkString) Lcfirst(str string) string 2898 ``` 2899 Lcfirst 将字符串的第一个字符转换为小写. 2900 2901 #### func (*LkkString) Lcwords 2902 2903 ```go 2904 func (ks *LkkString) Lcwords(str string) string 2905 ``` 2906 Lcwords 将字符串中每个词的首字母转换为小写. 2907 2908 #### func (*LkkString) Levenshtein 2909 2910 ```go 2911 func (ks *LkkString) Levenshtein(a, b *string) int 2912 ``` 2913 Levenshtein 计算两个字符串之间的编辑距离. 2914 2915 #### func (*LkkString) Ltrim 2916 2917 ```go 2918 func (ks *LkkString) Ltrim(str string, characterMask ...string) string 2919 ``` 2920 Ltrim 删除字符串开头的空白字符(或其他字符). 2921 2922 #### func (*LkkString) MbStrlen 2923 2924 ```go 2925 func (ks *LkkString) MbStrlen(str string) int 2926 ``` 2927 MbStrlen 获取宽字符串的长度,多字节的字符被计为 1. 2928 2929 #### func (*LkkString) MbSubstr 2930 2931 ```go 2932 func (ks *LkkString) MbSubstr(str string, start int, length ...int) string 2933 ``` 2934 MbSubstr 返回(宽字符)字符串str的子串. start 为起始位置.若值是负数,返回的结果将从 str 结尾处向前数第 abs(start) 2935 个字符开始. length 为截取的长度.若值时负数, str 末尾处的 abs(length) 个字符将会被省略. 2936 start/length的绝对值必须<=原字符串长度. 2937 2938 #### func (*LkkString) Md5 2939 2940 ```go 2941 func (ks *LkkString) Md5(str string, length uint8) string 2942 ``` 2943 Md5 获取字符串md5值,length指定结果长度32/16 . 2944 2945 #### func (*LkkString) Nl2br 2946 2947 ```go 2948 func (ks *LkkString) Nl2br(html string) string 2949 ``` 2950 Nl2br 将换行符转换为br标签. 2951 2952 #### func (*LkkString) Ord 2953 2954 ```go 2955 func (ks *LkkString) Ord(char string) rune 2956 ``` 2957 Ord 将首字符转换为rune. 2958 2959 #### func (*LkkString) ParseStr 2960 2961 ```go 2962 func (ks *LkkString) ParseStr(encodedString string, result map[string]interface{}) error 2963 ``` 2964 ParseStr 将查询字符串转换为字典. 2965 2966 #### func (*LkkString) ParseUrl 2967 2968 ```go 2969 func (ks *LkkString) ParseUrl(str string, component int) (map[string]string, error) 2970 ``` 2971 ParseUrl 解析 URL,返回其组成部分. component为需要返回的组成; -1: all; 1: scheme; 2: host; 4: 2972 port; 8: user; 16: pass; 32: path; 64: query; 128: fragment . 2973 2974 #### func (*LkkString) Quotemeta 2975 2976 ```go 2977 func (ks *LkkString) Quotemeta(str string) string 2978 ``` 2979 Quotemeta 转义元字符集,包括 . \ + * ? [ ^ ] ( $ ). 2980 2981 #### func (*LkkString) Random 2982 2983 ```go 2984 func (ks *LkkString) Random(length uint8, rtype LkkRandString) string 2985 ``` 2986 Random 生成随机字符串. length为长度,rtype为枚举: RAND_STRING_ALPHA 字母; RAND_STRING_NUMERIC 2987 数值; RAND_STRING_ALPHANUM 字母+数值; RAND_STRING_SPECIAL 字母+数值+特殊字符; 2988 RAND_STRING_CHINESE 仅中文. 2989 2990 #### func (*LkkString) RawurlDecode 2991 2992 ```go 2993 func (ks *LkkString) RawurlDecode(str string) (string, error) 2994 ``` 2995 RawurlDecode 对已编码的 URL 字符串进行解码. 2996 2997 #### func (*LkkString) RawurlEncode 2998 2999 ```go 3000 func (ks *LkkString) RawurlEncode(str string) string 3001 ``` 3002 RawurlEncode 按照 RFC 3986 对 URL 进行编码. 3003 3004 #### func (*LkkString) RemoveAfter 3005 3006 ```go 3007 func (ks *LkkString) RemoveAfter(str, after string, include, ignoreCase bool) string 3008 ``` 3009 RemoveAfter 移除after之后的字符串; include为是否移除包括after本身; ignoreCase为是否忽略大小写. 3010 3011 #### func (*LkkString) RemoveBefore 3012 3013 ```go 3014 func (ks *LkkString) RemoveBefore(str, before string, include, ignoreCase bool) string 3015 ``` 3016 RemoveBefore 移除before之前的字符串; include为是否移除包括before本身; ignoreCase为是否忽略大小写. 3017 3018 #### func (*LkkString) RemoveEmoji 3019 3020 ```go 3021 func (ks *LkkString) RemoveEmoji(str string) string 3022 ``` 3023 RemoveEmoji 移除字符串中的表情符(使用正则,效率较低). 3024 3025 #### func (*LkkString) RemoveSpace 3026 3027 ```go 3028 func (ks *LkkString) RemoveSpace(str string, all bool) string 3029 ``` 3030 RemoveSpace 移除字符串中的空白字符. all为true时移除全部空白,为false时只替换连续的空白字符为一个空格. 3031 3032 #### func (*LkkString) Reverse 3033 3034 ```go 3035 func (ks *LkkString) Reverse(str string) string 3036 ``` 3037 Reverse 反转字符串. 3038 3039 #### func (*LkkString) Rtrim 3040 3041 ```go 3042 func (ks *LkkString) Rtrim(str string, characterMask ...string) string 3043 ``` 3044 Rtrim 删除字符串末端的空白字符(或者其他字符). 3045 3046 #### func (*LkkString) SBC2DBC 3047 3048 ```go 3049 func (ks *LkkString) SBC2DBC(s string) string 3050 ``` 3051 SBC2DBC 全角转半角. 3052 3053 #### func (*LkkString) ShaX 3054 3055 ```go 3056 func (ks *LkkString) ShaX(str string, x uint16) string 3057 ``` 3058 ShaX 计算字符串的 shaX 散列值,x为1/256/512 . 3059 3060 #### func (*LkkString) Shuffle 3061 3062 ```go 3063 func (ks *LkkString) Shuffle(str string) string 3064 ``` 3065 Shuffle 随机打乱字符串. 3066 3067 #### func (*LkkString) SimilarText 3068 3069 ```go 3070 func (ks *LkkString) SimilarText(first, second string, percent *float64) int 3071 ``` 3072 SimilarText 计算两个字符串的相似度,返回在两个字符串中匹配字符的数目;percent为相似程度百分数. 3073 3074 #### func (*LkkString) StartsWith 3075 3076 ```go 3077 func (ks *LkkString) StartsWith(str, sub string, ignoreCase bool) bool 3078 ``` 3079 StartsWith 字符串str是否以sub开头. 3080 3081 #### func (*LkkString) StripTags 3082 3083 ```go 3084 func (ks *LkkString) StripTags(str string) string 3085 ``` 3086 StripTags 过滤html和php标签. 3087 3088 #### func (*LkkString) Stripos 3089 3090 ```go 3091 func (ks *LkkString) Stripos(haystack, needle string, offset int) int 3092 ``` 3093 Stripos 查找字符串首次出现的位置(不区分大小写),找不到时返回-1. haystack在该字符串中进行查找,needle要查找的字符串; 3094 offset起始位置,为负数时时,搜索会从字符串结尾指定字符数开始. 3095 3096 #### func (*LkkString) Stripslashes 3097 3098 ```go 3099 func (ks *LkkString) Stripslashes(str string) string 3100 ``` 3101 Stripslashes 反引用一个引用字符串. 3102 3103 #### func (*LkkString) Strlen 3104 3105 ```go 3106 func (ks *LkkString) Strlen(str string) int 3107 ``` 3108 Strlen 获取字符串长度. 3109 3110 #### func (*LkkString) Strpad 3111 3112 ```go 3113 func (ks *LkkString) Strpad(str string, fill string, max int, ptype LkkPadType) string 3114 ``` 3115 Strpad 使用fill填充str字符串到指定长度max. ptype为填充类型,枚举值(PAD_LEFT,PAD_RIGHT,PAD_BOTH). 3116 3117 #### func (*LkkString) StrpadBoth 3118 3119 ```go 3120 func (ks *LkkString) StrpadBoth(str string, fill string, max int) string 3121 ``` 3122 StrpadBoth 字符串两侧填充,请参考Strpad. 3123 3124 #### func (*LkkString) StrpadLeft 3125 3126 ```go 3127 func (ks *LkkString) StrpadLeft(str string, fill string, max int) string 3128 ``` 3129 StrpadLeft 字符串左侧填充,请参考Strpad. 3130 3131 #### func (*LkkString) StrpadRight 3132 3133 ```go 3134 func (ks *LkkString) StrpadRight(str string, fill string, max int) string 3135 ``` 3136 StrpadRight 字符串右侧填充,请参考Strpad. 3137 3138 #### func (*LkkString) Strpos 3139 3140 ```go 3141 func (ks *LkkString) Strpos(haystack, needle string, offset int) int 3142 ``` 3143 Strpos 查找字符串首次出现的位置,找不到时返回-1. haystack在该字符串中进行查找,needle要查找的字符串; 3144 offset起始位置,为负数时时,搜索会从字符串结尾指定字符数开始. 3145 3146 #### func (*LkkString) Strripos 3147 3148 ```go 3149 func (ks *LkkString) Strripos(haystack, needle string, offset int) int 3150 ``` 3151 Strripos 查找指定字符串在目标字符串中最后一次出现的位置(不区分大小写). 3152 3153 #### func (*LkkString) Strrpos 3154 3155 ```go 3156 func (ks *LkkString) Strrpos(haystack, needle string, offset int) int 3157 ``` 3158 Strrpos 查找指定字符串在目标字符串中最后一次出现的位置. 3159 3160 #### func (*LkkString) Substr 3161 3162 ```go 3163 func (ks *LkkString) Substr(str string, start int, length ...int) string 3164 ``` 3165 Substr 截取字符串str的子串. start 为起始位置.若值是负数,返回的结果将从 str 结尾处向前数第 abs(start) 个字符开始. 3166 length 为截取的长度.若值时负数, str 末尾处的 abs(length) 个字符将会被省略. start/length的绝对值必须<=原字符串长度. 3167 3168 #### func (*LkkString) SubstrCount 3169 3170 ```go 3171 func (ks *LkkString) SubstrCount(str, substr string) int 3172 ``` 3173 SubstrCount 计算字符串出现的次数. 3174 3175 #### func (*LkkString) ToCamelCase 3176 3177 ```go 3178 func (ks *LkkString) ToCamelCase(str string) string 3179 ``` 3180 ToCamelCase 转为驼峰写法. 去掉包括下划线"_"和横杠"-". 3181 3182 #### func (*LkkString) ToKebabCase 3183 3184 ```go 3185 func (ks *LkkString) ToKebabCase(str string) string 3186 ``` 3187 ToSnakeCase 转为串形写法. 使用横杠"-"连接. 3188 3189 #### func (*LkkString) ToSnakeCase 3190 3191 ```go 3192 func (ks *LkkString) ToSnakeCase(str string) string 3193 ``` 3194 ToSnakeCase 转为蛇形写法. 使用下划线"_"连接. 3195 3196 #### func (*LkkString) Trim 3197 3198 ```go 3199 func (ks *LkkString) Trim(str string, characterMask ...string) string 3200 ``` 3201 Trim 去除字符串首尾处的空白字符(或者其他字符). 3202 3203 #### func (*LkkString) Ucfirst 3204 3205 ```go 3206 func (ks *LkkString) Ucfirst(str string) string 3207 ``` 3208 Ucfirst 将字符串的第一个字符转换为大写. 3209 3210 #### func (*LkkString) Ucwords 3211 3212 ```go 3213 func (ks *LkkString) Ucwords(str string) string 3214 ``` 3215 Ucwords 将字符串中每个词的首字母转换为大写. 3216 3217 #### func (*LkkString) Uniqid 3218 3219 ```go 3220 func (ks *LkkString) Uniqid(prefix string) string 3221 ``` 3222 Uniqid 获取一个带前缀、基于当前时间微秒数的唯一ID. 3223 3224 #### func (*LkkString) UrlDecode 3225 3226 ```go 3227 func (ks *LkkString) UrlDecode(str string) (string, error) 3228 ``` 3229 UrlDecode 解码已编码的 URL 字符串. 3230 3231 #### func (*LkkString) UrlEncode 3232 3233 ```go 3234 func (ks *LkkString) UrlEncode(str string) string 3235 ``` 3236 UrlEncode 编码 URL 字符串. 3237 3238 #### func (*LkkString) Utf8ToBig5 3239 3240 ```go 3241 func (ks *LkkString) Utf8ToBig5(s []byte) ([]byte, error) 3242 ``` 3243 Utf8ToBig5 UTF-8转BIG5编码. 3244 3245 #### func (*LkkString) Utf8ToGbk 3246 3247 ```go 3248 func (ks *LkkString) Utf8ToGbk(s []byte) ([]byte, error) 3249 ``` 3250 Utf8ToGbk UTF-8转GBK编码. 3251 3252 #### func (*LkkString) UuidV4 3253 3254 ```go 3255 func (ks *LkkString) UuidV4() (string, error) 3256 ``` 3257 UuidV4 获取UUID(Version4). 3258 3259 #### func (*LkkString) VersionCompare 3260 3261 ```go 3262 func (ks *LkkString) VersionCompare(version1, version2, operator string) bool 3263 ``` 3264 VersionCompare 对比两个版本号字符串. 在第一个版本低于第二个时,version_compare() 返回 -1;如果两者相等,返回 3265 0;第二个版本更低时则返回 1. operator允许的操作符有: <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, 3266 <>, ne . 特定的版本字符串,将会用以下顺序处理: 未找到的任意字符串 < dev < alpha = a < beta = b < RC = rc < 3267 # < pl = p 用法: VersionCompare("1.2.3-alpha", "1.2.3RC7", '>=') ; 3268 VersionCompare("1.2.3-beta", "1.2.3pl", 'lt') ; VersionCompare("1.1_dev", 3269 "1.2any", 'eq') . 3270 3271 #### type LkkTime 3272 3273 ```go 3274 type LkkTime byte 3275 ``` 3276 3277 LkkTime is the receiver of time utilities 3278 3279 #### func (*LkkTime) CheckDate 3280 3281 ```go 3282 func (kt *LkkTime) CheckDate(year, month, day int) bool 3283 ``` 3284 CheckDate 检查是否正常的日期. 3285 3286 #### func (*LkkTime) Date 3287 3288 ```go 3289 func (kt *LkkTime) Date(format string, ts ...interface{}) string 3290 ``` 3291 Date 格式化时间. format 格式,如"Y-m-d H:i:s". ts为int/int64类型时间戳或time.Time类型. 3292 3293 #### func (*LkkTime) Day 3294 3295 ```go 3296 func (kt *LkkTime) Day(t ...time.Time) int 3297 ``` 3298 Day 获取日份. 3299 3300 #### func (*LkkTime) DaysBetween 3301 3302 ```go 3303 func (kt *LkkTime) DaysBetween(fromDate, toDate time.Time) int 3304 ``` 3305 DaysBetween 获取两个日期的间隔天数. 3306 3307 #### func (*LkkTime) EndOfDay 3308 3309 ```go 3310 func (kt *LkkTime) EndOfDay(date time.Time) time.Time 3311 ``` 3312 EndOfDay 获取日期中当天的结束时间. 3313 3314 #### func (*LkkTime) EndOfMonth 3315 3316 ```go 3317 func (kt *LkkTime) EndOfMonth(date time.Time) time.Time 3318 ``` 3319 EndOfMonth 获取日期中当月的结束时间. 3320 3321 #### func (*LkkTime) EndOfWeek 3322 3323 ```go 3324 func (kt *LkkTime) EndOfWeek(date time.Time, weekStartDay ...time.Weekday) time.Time 3325 ``` 3326 EndOfWeek 获取日期中当周的结束时间; weekStartDay 周几作为周的第一天,本库默认周一. 3327 3328 #### func (*LkkTime) EndOfYear 3329 3330 ```go 3331 func (kt *LkkTime) EndOfYear(date time.Time) time.Time 3332 ``` 3333 EndOfYear 获取日期中当年的结束时间. 3334 3335 #### func (*LkkTime) GetMonthDays 3336 3337 ```go 3338 func (kt *LkkTime) GetMonthDays(month int, years ...int) (days int) 3339 ``` 3340 GetMonthDays 获取指定月份的天数.years年份,可选,默认当前年份. 3341 3342 #### func (*LkkTime) Hour 3343 3344 ```go 3345 func (kt *LkkTime) Hour(t ...time.Time) int 3346 ``` 3347 Hour 获取小时. 3348 3349 #### func (*LkkTime) IsDate2time 3350 3351 ```go 3352 func (kt *LkkTime) IsDate2time(str string) (bool, int64) 3353 ``` 3354 IsDate2time 检查字符串是否日期格式,并转换为时间戳.注意,时间戳可能为负数(小于1970年时). 匹配如: 3355 3356 0000 3357 0000-00 3358 0000/00 3359 0000-00-00 3360 0000/00/00 3361 0000-00-00 00 3362 0000/00/00 00 3363 0000-00-00 00:00 3364 0000/00/00 00:00 3365 0000-00-00 00:00:00 3366 0000/00/00 00:00:00 3367 3368 等日期格式. 3369 3370 #### func (*LkkTime) MicroTime 3371 3372 ```go 3373 func (kt *LkkTime) MicroTime() int64 3374 ``` 3375 MicroTime 获取当前Unix时间戳(微秒). 3376 3377 #### func (*LkkTime) MilliTime 3378 3379 ```go 3380 func (kt *LkkTime) MilliTime() int64 3381 ``` 3382 MilliTime 获取当前Unix时间戳(毫秒). 3383 3384 #### func (*LkkTime) Minute 3385 3386 ```go 3387 func (kt *LkkTime) Minute(t ...time.Time) int 3388 ``` 3389 Minute 获取分钟. 3390 3391 #### func (*LkkTime) Month 3392 3393 ```go 3394 func (kt *LkkTime) Month(t ...time.Time) int 3395 ``` 3396 Month 获取月份. 3397 3398 #### func (*LkkTime) Second 3399 3400 ```go 3401 func (kt *LkkTime) Second(t ...time.Time) int 3402 ``` 3403 Second 获取秒数. 3404 3405 #### func (*LkkTime) ServiceStartime 3406 3407 ```go 3408 func (kt *LkkTime) ServiceStartime() int64 3409 ``` 3410 ServiceStartime 获取当前服务启动时间戳,秒. 3411 3412 #### func (*LkkTime) ServiceUptime 3413 3414 ```go 3415 func (kt *LkkTime) ServiceUptime() time.Duration 3416 ``` 3417 ServiceUptime 获取当前服务运行时间,纳秒int64. 3418 3419 #### func (*LkkTime) Sleep 3420 3421 ```go 3422 func (kt *LkkTime) Sleep(t int64) 3423 ``` 3424 Sleep 延缓执行,秒. 3425 3426 #### func (*LkkTime) StartOfDay 3427 3428 ```go 3429 func (kt *LkkTime) StartOfDay(date time.Time) time.Time 3430 ``` 3431 StartOfDay 获取日期中当天的开始时间. 3432 3433 #### func (*LkkTime) StartOfMonth 3434 3435 ```go 3436 func (kt *LkkTime) StartOfMonth(date time.Time) time.Time 3437 ``` 3438 StartOfMonth 获取日期中当月的开始时间. 3439 3440 #### func (*LkkTime) StartOfWeek 3441 3442 ```go 3443 func (kt *LkkTime) StartOfWeek(date time.Time, weekStartDay ...time.Weekday) time.Time 3444 ``` 3445 StartOfWeek 获取日期中当周的开始时间; weekStartDay 周几作为周的第一天,本库默认周一. 3446 3447 #### func (*LkkTime) StartOfYear 3448 3449 ```go 3450 func (kt *LkkTime) StartOfYear(date time.Time) time.Time 3451 ``` 3452 StartOfYear 获取日期中当年的开始时间. 3453 3454 #### func (*LkkTime) Str2Timestamp 3455 3456 ```go 3457 func (kt *LkkTime) Str2Timestamp(str string, format ...string) (int64, error) 3458 ``` 3459 Str2Timestamp 将字符串转换为时间戳,秒. str 为要转换的字符串; format 为该字符串的格式,默认为"2006-01-02 3460 15:04:05" . 3461 3462 #### func (*LkkTime) Str2Timestruct 3463 3464 ```go 3465 func (kt *LkkTime) Str2Timestruct(str string, format ...string) (time.Time, error) 3466 ``` 3467 Str2Time 将字符串转换为时间结构. str 为要转换的字符串; format 为该字符串的格式,默认为"2006-01-02 15:04:05" . 3468 3469 #### func (*LkkTime) UnixTime 3470 3471 ```go 3472 func (kt *LkkTime) UnixTime() int64 3473 ``` 3474 Time 获取当前Unix时间戳(秒). 3475 3476 #### func (*LkkTime) Usleep 3477 3478 ```go 3479 func (kt *LkkTime) Usleep(t int64) 3480 ``` 3481 Usleep 以指定的微秒数延迟执行. 3482 3483 #### func (*LkkTime) Year 3484 3485 ```go 3486 func (kt *LkkTime) Year(t ...time.Time) int 3487 ``` 3488 Year 获取年份. 3489 3490 #### type SystemInfo 3491 3492 ```go 3493 type SystemInfo struct { 3494 ServerName string `json:"server_name"` //服务器名称 3495 SystemOs string `json:"system_os"` //操作系统名称 3496 Runtime int64 `json:"run_time"` //服务运行时间,纳秒 3497 GoroutineNum int `json:"goroutine_num"` //goroutine数量 3498 CpuNum int `json:"cpu_num"` //cpu核数 3499 CpuUser float64 `json:"cpu_user"` //cpu用户态比率 3500 CpuFree float64 `json:"cpu_free"` //cpu空闲比率 3501 DiskUsed uint64 `json:"disk_used"` //已用磁盘空间,字节数 3502 DiskFree uint64 `json:"disk_free"` //可用磁盘空间,字节数 3503 DiskTotal uint64 `json:"disk_total"` //总磁盘空间,字节数 3504 MemUsed uint64 `json:"mem_used"` //已用内存,字节数 3505 MemSys uint64 `json:"mem_sys"` //系统内存占用量,字节数 3506 MemFree uint64 `json:"mem_free"` //剩余内存,字节数 3507 MemTotal uint64 `json:"mem_total"` //总内存,字节数 3508 AllocGolang uint64 `json:"alloc_golang"` //golang内存使用量,字节数 3509 AllocTotal uint64 `json:"alloc_total"` //总分配的内存,字节数 3510 Lookups uint64 `json:"lookups"` //指针查找次数 3511 Mallocs uint64 `json:"mallocs"` //内存分配次数 3512 Frees uint64 `json:"frees"` //内存释放次数 3513 LastGCTime uint64 `json:"last_gc_time"` //上次GC时间,纳秒 3514 NextGC uint64 `json:"next_gc"` //下次GC内存回收量,字节数 3515 PauseTotalNs uint64 `json:"pause_total_ns"` //GC暂停时间总量,纳秒 3516 PauseNs uint64 `json:"pause_ns"` //上次GC暂停时间,纳秒 3517 } 3518 ``` 3519 3520 SystemInfo 系统信息