github.com/PandaGoAdmin/utils@v0.0.0-20211208134815-d5461603a00f/docs/v0.1.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.1.9" 12 13 Unknown = "Unknown" 14 15 //UINT_MAX 无符号整型uint最大值 16 UINT_MAX = ^uint(0) 17 18 //UINT8_MAX 无符号整型uint8最大值, 255 19 UINT8_MAX = ^uint8(0) 20 21 //UINT16_MAX 无符号整型uint16最大值, 65535 22 UINT16_MAX = ^uint16(0) 23 24 //UINT32_MAX 无符号整型uint32最大值, 4294967295 25 UINT32_MAX = ^uint32(0) 26 27 //UINT64_MAX 无符号整型uint64最大值, 18446744073709551615 28 UINT64_MAX = ^uint64(0) 29 30 //INT_MAX 有符号整型int最大值 31 INT_MAX = int(^uint(0) >> 1) 32 //INT_MIN 有符号整型int最小值 33 INT_MIN = ^INT_MAX 34 35 //INT32_MAX 有符号整型int32最大值, 2147483647 36 INT32_MAX = int32(^uint32(0) >> 1) 37 //INT32_MIN 有符号整型int32最小值, -2147483648 38 INT32_MIN = ^INT32_MAX 39 40 //INT64_MAX 有符号整型int64最大值, 9223372036854775807 41 INT64_MAX = int64(^uint64(0) >> 1) 42 //INT64_MIN 有符号整型int64最小值, -9223372036854775808 43 INT64_MIN = ^INT64_MAX 44 45 // FILE_COVER_ALLOW 文件覆盖,允许 46 FILE_COVER_ALLOW LkkFileCover = 1 47 // FILE_COVER_IGNORE 文件覆盖,忽略 48 FILE_COVER_IGNORE LkkFileCover = 0 49 // FILE_COVER_DENY 文件覆盖,禁止 50 FILE_COVER_DENY LkkFileCover = -1 51 52 // FILE_TYPE_ANY 文件类型-任意 53 FILE_TYPE_ANY LkkFileType = 0 54 // FILE_TYPE_LINK 文件类型-链接文件 55 FILE_TYPE_LINK LkkFileType = 1 56 // FILE_TYPE_REGULAR 文件类型-常规文件(不包括链接) 57 FILE_TYPE_REGULAR LkkFileType = 2 58 // FILE_TYPE_COMMON 文件类型-普通文件(包括常规和链接) 59 FILE_TYPE_COMMON LkkFileType = 3 60 61 // FILE_TREE_ALL 文件树,查找所有(包括目录和文件) 62 FILE_TREE_ALL LkkFileTree = 3 63 // FILE_TREE_DIR 文件树,仅查找目录 64 FILE_TREE_DIR LkkFileTree = 2 65 // FILE_TREE_FILE 文件树,仅查找文件 66 FILE_TREE_FILE LkkFileTree = 1 67 68 // RAND_STRING_ALPHA 随机字符串类型,字母 69 RAND_STRING_ALPHA LkkRandString = 0 70 // RAND_STRING_NUMERIC 随机字符串类型,数值 71 RAND_STRING_NUMERIC LkkRandString = 1 72 // RAND_STRING_ALPHANUM 随机字符串类型,字母+数值 73 RAND_STRING_ALPHANUM LkkRandString = 2 74 // RAND_STRING_SPECIAL 随机字符串类型,字母+数值+特殊字符 75 RAND_STRING_SPECIAL LkkRandString = 3 76 // RAND_STRING_CHINESE 随机字符串类型,仅中文 77 RAND_STRING_CHINESE LkkRandString = 4 78 79 // CASE_NONE 忽略大小写 80 CASE_NONE LkkCaseSwitch = 0 81 // CASE_LOWER 检查小写 82 CASE_LOWER LkkCaseSwitch = 1 83 // CASE_UPPER 检查大写 84 CASE_UPPER LkkCaseSwitch = 2 85 86 // PAD_LEFT 左侧填充 87 PAD_LEFT LkkPadType = 0 88 // PAD_RIGHT 右侧填充 89 PAD_RIGHT LkkPadType = 1 90 // PAD_BOTH 两侧填充 91 PAD_BOTH LkkPadType = 2 92 93 // PKCS_NONE 不进行填充 94 PKCS_NONE LkkPKCSType = -1 95 // PKCS_ZERO PKCS 0值填充 96 PKCS_ZERO LkkPKCSType = 0 97 // PKCS_SEVEN 即PKCS7 98 PKCS_SEVEN LkkPKCSType = 7 99 100 // COMPARE_ONLY_VALUE 仅比较值 101 COMPARE_ONLY_VALUE LkkArrCompareType = 0 102 // COMPARE_ONLY_KEY 仅比较键 103 COMPARE_ONLY_KEY LkkArrCompareType = 1 104 // COMPARE_BOTH_KEYVALUE 同时比较键和值 105 COMPARE_BOTH_KEYVALUE LkkArrCompareType = 2 106 107 //默认浮点数精确小数位数 108 FLOAT_DECIMAL uint8 = 8 109 110 //AuthCode 动态密钥长度,须<32 111 DYNAMIC_KEY_LEN = 8 112 113 //检查连接超时的时间 114 CHECK_CONNECT_TIMEOUT = time.Second * 5 115 116 // 正则模式-全中文 117 PATTERN_CHINESE_ALL = "^[\u4e00-\u9fa5]+$" 118 119 // 正则模式-中文名称 120 PATTERN_CHINESE_NAME = "^[\u4e00-\u9fa5][.•·\u4e00-\u9fa5]{0,30}[\u4e00-\u9fa5]$" 121 122 // 正则模式-多字节字符 123 PATTERN_MULTIBYTE = "[^\x00-\x7F]" 124 125 // 正则模式-ASCII字符 126 PATTERN_ASCII = "^[\x00-\x7F]+$" 127 128 // 正则模式-全角字符 129 PATTERN_FULLWIDTH = "[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]" 130 131 // 正则模式-半角字符 132 PATTERN_HALFWIDTH = "[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]" 133 134 // 正则模式-词语,不以下划线开头的中文、英文、数字、下划线 135 PATTERN_WORD = "^[a-zA-Z0-9\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]+$" 136 137 // 正则模式-浮点数 138 PATTERN_FLOAT = `^(-?\d+)(\.\d+)` 139 140 // 正则模式-邮箱 141 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])?)*$" 142 143 // 正则模式-用户名-英文 144 PATTERN_USERNAMEEN = `^[a-zA-Z0-9_.]+$` 145 146 // 正则模式-大陆手机号 147 PATTERN_MOBILECN = `^1[3-9]\d{9}$` 148 149 // 正则模式-固定电话 150 PATTERN_TEL_FIX = `^(010|02\d{1}|0[3-9]\d{2})-\d{7,9}(-\d+)?$` 151 152 // 正则模式-400或800 153 PATTERN_TEL_4800 = `^[48]00\d?(-?\d{3,4}){2}$` 154 155 // 正则模式-座机号(固定电话或400或800) 156 PATTERN_TELEPHONE = `(` + PATTERN_TEL_FIX + `)|(` + PATTERN_TEL_4800 + `)` 157 158 // 正则模式-电话(手机或固话) 159 PATTERN_PHONE = `(` + PATTERN_MOBILECN + `)|(` + PATTERN_TEL_FIX + `)` 160 161 // 正则模式-日期时间 162 PATTERN_DATETIME = `^[0-9]{4}(|\-[0-9]{2}(|\-[0-9]{2}(|\s+[0-9]{2}(|:[0-9]{2}(|:[0-9]{2})))))$` 163 164 // 正则模式-身份证号码,18位或15位 165 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}$)` 166 167 // 正则模式-小写英文 168 PATTERN_ALPHA_LOWER = `^[a-z]+$` 169 170 // 正则模式-大写英文 171 PATTERN_ALPHA_UPPER = `^[A-Z]+$` 172 173 // 正则模式-字母或数字 174 PATTERN_ALPHA_NUMERIC = `^[a-zA-Z0-9]+$` 175 176 // 正则模式-十六进制颜色 177 PATTERN_HEXCOLOR = `^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$` 178 179 // 正则模式-RGB颜色 180 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*\\)$" 181 182 // 正则模式-全空白字符 183 PATTERN_WHITESPACE_ALL = "^[[:space:]]+$" 184 185 // 正则模式-带空白字符 186 PATTERN_WHITESPACE_HAS = ".*[[:space:]]" 187 188 // 正则模式-连续空白符 189 PATTERN_WHITESPACE_DUPLICATE = `[[:space:]]{2,}|[\s\p{Zs}]{2,}` 190 191 // 正则模式-base64字符串 192 PATTERN_BASE64 = "^(?:[A-Za-z0-9+\\/]{4})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=|[A-Za-z0-9+\\/]{4})$" 193 194 // 正则模式-base64编码图片 195 PATTERN_BASE64_IMAGE = `^data:\s*(image|img)\/(\w+);base64` 196 197 // 正则模式-html标签 198 PATTERN_HTML_TAGS = `<(.|\n)*?>` 199 200 // 正则模式-DNS名称 201 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})*[\._]?$` 202 203 // 正则模式-MD5 204 PATTERN_MD5 = `^(?i)([0-9a-h]{32})$` 205 206 // 正则模式-SHA1 207 PATTERN_SHA1 = `^(?i)([0-9a-h]{40})$` 208 209 // 正则模式-SHA256 210 PATTERN_SHA256 = `^(?i)([0-9a-h]{64})$` 211 212 // 正则模式-SHA512 213 PATTERN_SHA512 = `^(?i)([0-9a-h]{128})$` 214 215 //正则模式-等式 x = y 216 PATTERN_EQUATION = `['"]?([\w\-]+)['"]?[\s]*=[\s]*['"]?(.*)['"]?` 217 218 // 正则模式-emoji表情符 219 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}]` 220 ) 221 ``` 222 223 ```go 224 var ( 225 // Kuptime 当前服务启动时间 226 Kuptime = time.Now() 227 228 // KFile utilities 229 KFile LkkFile 230 231 // KStr utilities 232 KStr LkkString 233 234 // KNum utilities 235 KNum LkkNumber 236 237 // KArr utilities 238 KArr LkkArray 239 240 // KTime utilities 241 KTime LkkTime 242 243 // KConv utilities 244 KConv LkkConvert 245 246 // KOS utilities 247 KOS LkkOS 248 249 // KEncr utilities 250 KEncr LkkEncrypt 251 252 // KDbug utilities 253 KDbug LkkDebug 254 255 // KPrivCidrs 私有网段的CIDR数组 256 KPrivCidrs []*net.IPNet 257 258 // KDelimiter 本库自定义分隔符 259 KDelimiter = "$@#KSYS#@$" 260 261 // 身份证区域 262 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": "国外"} 263 264 // 常用中文字符集 265 CommonChinese = []rune("们以我到他会作时要动国产的一是工就年阶义发成部民可出能方进在了不和有大这主中人上为来分生对于学下级地个用同行面说种过命度革而多子后自社加小机也经力线本电高量长党得实家定深法表着水理化争现所二起政三好十战无农使性前等反体合斗路图把结第里正新开论之物从当两些还天资事队批点育重其思与间内去因件日利相由压员气业代全组数果期导平各基或月毛然如应形想制心样干都向变关问比展那它最及外没看治提五解系林者米群头意只明四道马认次文通但条较克又公孔领军流入接席位情运器并飞原油放立题质指建区验活众很教决特此常石强极土少已根共直团统式转别造切九你取西持总料连任志观调七么山程百报更见必真保热委手改管处己将修支识病象几先老光专什六型具示复安带每东增则完风回南广劳轮科北打积车计给节做务被整联步类集号列温装即毫知轴研单色坚据速防史拉世设达尔场织历花受求传口断况采精金界品判参层止边清至万确究书术状厂须离再目海交权且儿青才证低越际八试规斯近注办布门铁需走议县兵固除般引齿千胜细影济白格效置推空配刀叶率述今选养德话查差半敌始片施响收华觉备名红续均药标记难存测士身紧液派准斤角降维板许破述技消底床田势端感往神便贺村构照容非搞亚磨族火段算适讲按值美态黄易彪服早班麦削信排台声该击素张密害侯草何树肥继右属市严径螺检左页抗苏显苦英快称坏移约巴材省黑武培著河帝仅针怎植京助升王眼她抓含苗副杂普谈围食射源例致酸旧却充足短划剂宣环落首尺波承粉践府鱼随考刻靠够满夫失包住促枝局菌杆周护岩师举曲春元超负砂封换太模贫减阳扬江析亩木言球朝医校古呢稻宋听唯输滑站另卫字鼓刚写刘微略范供阿块某功套友限项余倒卷创律雨让骨远帮初皮播优占死毒圈伟季训控激找叫云互跟裂粮粒母练塞钢顶策双留误础吸阻故寸盾晚丝女散焊功株亲院冷彻弹错散商视艺灭版烈零室轻血倍缺厘泵察绝富城冲喷壤简否柱李望盘磁雄似困巩益洲脱投送奴侧润盖挥距触星松送获兴独官混纪依未突架宽冬章湿偏纹吃执阀矿寨责熟稳夺硬价努翻奇甲预职评读背协损棉侵灰虽矛厚罗泥辟告卵箱掌氧恩爱停曾溶营终纲孟钱待尽俄缩沙退陈讨奋械载胞幼哪剥迫旋征槽倒握担仍呀鲜吧卡粗介钻逐弱脚怕盐末阴丰雾冠丙街莱贝辐肠付吉渗瑞惊顿挤秒悬姆烂森糖圣凹陶词迟蚕亿矩康遵牧遭幅园腔订香肉弟屋敏恢忘编印蜂急拿扩伤飞露核缘游振操央伍域甚迅辉异序免纸夜乡久隶缸夹念兰映沟乙吗儒杀汽磷艰晶插埃燃欢铁补咱芽永瓦倾阵碳演威附牙芽永瓦斜灌欧献顺猪洋腐请透司危括脉宜笑若尾束壮暴企菜穗楚汉愈绿拖牛份染既秋遍锻玉夏疗尖殖井费州访吹荣铜沿替滚客召旱悟刺脑措贯藏敢令隙炉壳硫煤迎铸粘探临薄旬善福纵择礼愿伏残雷延烟句纯渐耕跑泽慢栽鲁赤繁境潮横掉锥希池败船假亮谓托伙哲怀割摆贡呈劲财仪沉炼麻罪祖息车穿货销齐鼠抽画饲龙库守筑房歌寒喜哥洗蚀废纳腹乎录镜妇恶脂庄擦险赞钟摇典柄辩竹谷卖乱虚桥奥伯赶垂途额壁网截野遗静谋弄挂课镇妄盛耐援扎虑键归符庆聚绕摩忙舞遇索顾胶羊湖钉仁音迹碎伸灯避泛亡答勇频皇柳哈揭甘诺概宪浓岛袭谁洪谢炮浇斑讯懂灵蛋闭孩释乳巨徒私银伊景坦累匀霉杜乐勒隔弯绩招绍胡呼痛峰零柴簧午跳居尚丁秦稍追梁折耗碱殊岗挖氏刃剧堆赫荷胸衡勤膜篇登驻案刊秧缓凸役剪川雪链渔啦脸户洛孢勃盟买杨宗焦赛旗滤硅炭股坐蒸凝竟陷枪黎救冒暗洞犯筒您宋弧爆谬涂味津臂障褐陆啊健尊豆拔莫抵桑坡缝警挑污冰柬嘴啥饭塑寄赵喊垫丹渡耳刨虎笔稀昆浪萨茶滴浅拥穴覆伦娘吨浸袖珠雌妈紫戏塔锤震岁貌洁剖牢锋疑霸闪埔猛诉刷狠忽灾闹乔唐漏闻沈熔氯荒茎男凡抢像浆旁玻亦忠唱蒙予纷捕锁尤乘乌智淡允叛畜俘摸锈扫毕璃宝芯爷鉴秘净蒋钙肩腾枯抛轨堂拌爸循诱祝励肯酒绳穷塘燥泡袋朗喂铝软渠颗惯贸粪综墙趋彼届墨碍启逆卸航衣孙龄岭骗休借") 266 267 // html抽取文本要排除的标签 268 TextHtmlExcludeTags = []string{"head", "title", "img", "form", "textarea", "input", "select", "button", "iframe", "script", "style", "option"} 269 270 // 已编译的正则 271 RegFormatDir = regexp.MustCompile(`[\/]{2,}`) //连续的"//"或"\\"或"\/"或"/\" 272 RegChineseAll = regexp.MustCompile(PATTERN_CHINESE_ALL) 273 RegChineseName = regexp.MustCompile(PATTERN_CHINESE_NAME) 274 RegWord = regexp.MustCompile(PATTERN_WORD) 275 RegMultiByte = regexp.MustCompile(PATTERN_MULTIBYTE) 276 RegFullWidth = regexp.MustCompile(PATTERN_FULLWIDTH) 277 RegHalfWidth = regexp.MustCompile(PATTERN_HALFWIDTH) 278 RegFloat = regexp.MustCompile(PATTERN_FLOAT) 279 RegEmail = regexp.MustCompile(PATTERN_EMAIL) 280 RegMobilecn = regexp.MustCompile(PATTERN_MOBILECN) 281 RegTelephone = regexp.MustCompile(PATTERN_TELEPHONE) 282 RegPhone = regexp.MustCompile(PATTERN_PHONE) 283 RegDatetime = regexp.MustCompile(PATTERN_DATETIME) 284 RegCreditno = regexp.MustCompile(PATTERN_CREDIT_NO) 285 RegAlphaLower = regexp.MustCompile(PATTERN_ALPHA_LOWER) 286 RegAlphaUpper = regexp.MustCompile(PATTERN_ALPHA_UPPER) 287 RegAlphaNumeric = regexp.MustCompile(PATTERN_ALPHA_NUMERIC) 288 RegHexcolor = regexp.MustCompile(PATTERN_HEXCOLOR) 289 RegRgbcolor = regexp.MustCompile(PATTERN_RGBCOLOR) 290 RegWhitespace = regexp.MustCompile(`\s`) 291 RegWhitespaceAll = regexp.MustCompile(PATTERN_WHITESPACE_ALL) 292 RegWhitespaceHas = regexp.MustCompile(PATTERN_WHITESPACE_HAS) 293 RegWhitespaceDuplicate = regexp.MustCompile(PATTERN_WHITESPACE_DUPLICATE) 294 RegBase64 = regexp.MustCompile(PATTERN_BASE64) 295 RegBase64Image = regexp.MustCompile(PATTERN_BASE64_IMAGE) 296 RegHtmlTag = regexp.MustCompile(PATTERN_HTML_TAGS) 297 RegDNSname = regexp.MustCompile(PATTERN_DNSNAME) 298 RegUrlBackslashDuplicate = regexp.MustCompile(`([^:])[\/]{2,}`) //url中连续的"//"或"\\"或"\/"或"/\" 299 RegMd5 = regexp.MustCompile(PATTERN_MD5) 300 RegSha1 = regexp.MustCompile(PATTERN_SHA1) 301 RegSha256 = regexp.MustCompile(PATTERN_SHA256) 302 RegSha512 = regexp.MustCompile(PATTERN_SHA512) 303 RegEmoji = regexp.MustCompile(PATTERN_EMOJI) 304 RegUsernameen = regexp.MustCompile(PATTERN_USERNAMEEN) 305 RegEquation = regexp.MustCompile(PATTERN_EQUATION) 306 ) 307 ``` 308 309 #### func CallFunc 310 311 ```go 312 func CallFunc(f interface{}, args ...interface{}) (results []interface{}, err error) 313 ``` 314 CallFunc 动态调用函数. 315 316 #### func GetFieldValue 317 318 ```go 319 func GetFieldValue(arr interface{}, fieldName string) (res interface{}, err error) 320 ``` 321 GetFieldValue 获取(字典/结构体的)字段值;fieldName为字段名,大小写敏感. 322 323 #### func GetVariatePointerAddr 324 325 ```go 326 func GetVariatePointerAddr(val interface{}) int64 327 ``` 328 GetVariatePointerAddr 获取变量的指针地址. 329 330 #### func GetVariateType 331 332 ```go 333 func GetVariateType(v interface{}) string 334 ``` 335 GetVariateType 获取变量类型. 336 337 #### func IsPointer 338 339 ```go 340 func IsPointer(val interface{}, notNil bool) (res bool) 341 ``` 342 IsPointer 检查变量是否指针类型; notNil 是否检查变量非nil. 343 344 #### func VerifyFunc 345 346 ```go 347 func VerifyFunc(f interface{}, args ...interface{}) (vf reflect.Value, vargs []reflect.Value, err error) 348 ``` 349 VerifyFunc 验证是否函数,并且参数个数、类型是否正确. 返回有效的函数、有效的参数. 350 351 #### type BiosInfo 352 353 ```go 354 type BiosInfo struct { 355 Vendor string `json:"vendor"` 356 Version string `json:"version"` 357 Date string `json:"date"` 358 } 359 ``` 360 361 BiosInfo BIOS信息 362 363 #### type BoardInfo 364 365 ```go 366 type BoardInfo struct { 367 Name string `json:"name"` 368 Vendor string `json:"vendor"` 369 Version string `json:"version"` 370 Serial string `json:"serial"` 371 AssetTag string `json:"assettag"` 372 } 373 ``` 374 375 BoardInfo Board信息 376 377 #### type CallBack 378 379 ```go 380 type CallBack func() 381 ``` 382 383 CallBack 回调执行函数,无参数且无返回值 384 385 #### type CpuInfo 386 387 ```go 388 type CpuInfo struct { 389 Vendor string `json:"vendor"` 390 Model string `json:"model"` 391 Speed string `json:"speed"` // CPU clock rate in MHz 392 Cache uint `json:"cache"` // CPU cache size in KB 393 Cpus uint `json:"cpus"` // number of physical CPUs 394 Cores uint `json:"cores"` // number of physical CPU cores 395 Threads uint `json:"threads"` // number of logical (HT) CPU cores 396 } 397 ``` 398 399 CpuInfo CPU信息 400 401 #### type FileFilter 402 403 ```go 404 type FileFilter func(string) bool 405 ``` 406 407 FileFilter 文件过滤函数 408 409 #### type LkkArrCompareType 410 411 ```go 412 type LkkArrCompareType uint8 413 ``` 414 415 LkkArrCompareType 枚举类型,数组比较方式 416 417 #### type LkkArray 418 419 ```go 420 type LkkArray struct { 421 } 422 ``` 423 424 LkkArray is the receiver of array utilities 425 426 #### func (*LkkArray) ArrayChunk 427 428 ```go 429 func (ka *LkkArray) ArrayChunk(arr interface{}, size int) [][]interface{} 430 ``` 431 ArrayChunk 将一个数组/切片分割成多个,size为每个子数组的长度. 432 433 #### func (*LkkArray) ArrayColumn 434 435 ```go 436 func (ka *LkkArray) ArrayColumn(arr interface{}, columnKey string) []interface{} 437 ``` 438 ArrayColumn 返回数组(切片/字典/结构体)中元素指定的一列. arr的元素必须是字典; columnKey为元素的字段名; 该方法效率较低. 439 440 #### func (*LkkArray) ArrayDiff 441 442 ```go 443 func (ka *LkkArray) ArrayDiff(arr1, arr2 interface{}, compareType LkkArrCompareType) map[interface{}]interface{} 444 ``` 445 ArrayDiff 计算数组(数组/切片/字典)的交集,返回在 arr1 中但不在 arr2 里的元素,注意会同时返回键. 446 compareType为两个数组的比较方式,枚举类型,有: COMPARE_ONLY_VALUE 根据元素值比较, 返回在 arr1 中但是不在arr2 447 里的值; COMPARE_ONLY_KEY 根据 arr1 中的键名和 arr2 进行比较,返回不同键名的项; COMPARE_BOTH_KEYVALUE 448 同时比较键和值. 449 450 #### func (*LkkArray) ArrayFlip 451 452 ```go 453 func (ka *LkkArray) ArrayFlip(arr interface{}) map[interface{}]interface{} 454 ``` 455 ArrayFlip 交换数组(切片/字典)中的键和值. 456 457 #### func (*LkkArray) ArrayIntersect 458 459 ```go 460 func (ka *LkkArray) ArrayIntersect(arr1, arr2 interface{}, compareType LkkArrCompareType) map[interface{}]interface{} 461 ``` 462 ArrayIntersect 计算数组(数组/切片/字典)的交集,返回在 arr1 中且在 arr2 里的元素,注意会同时返回键. 463 compareType为两个数组的比较方式,枚举类型,有: COMPARE_ONLY_VALUE 根据元素值比较, 返回在 arr1 中且在arr2 里的值; 464 COMPARE_ONLY_KEY 根据 arr1 中的键名和 arr2 进行比较,返回相同键名的项; COMPARE_BOTH_KEYVALUE 465 同时比较键和值. 466 467 #### func (*LkkArray) ArrayKeyExists 468 469 ```go 470 func (ka *LkkArray) ArrayKeyExists(key interface{}, arr interface{}) bool 471 ``` 472 ArrayKeyExists 检查arr(数组/切片/字典/结构体)里是否有key指定的键名(索引/字段). 473 474 #### func (*LkkArray) ArrayKeys 475 476 ```go 477 func (ka *LkkArray) ArrayKeys(arr interface{}) []interface{} 478 ``` 479 ArrayKeys 返回数组(切片/字典/结构体)中所有的键名;如果是结构体,只返回公开的字段. 480 481 #### func (*LkkArray) ArrayPad 482 483 ```go 484 func (ka *LkkArray) ArrayPad(arr interface{}, size int, item interface{}) []interface{} 485 ``` 486 ArrayPad 以指定长度将一个值item填充进arr数组/切片. 若 size 为正,则填补到数组的右侧,如果为负则从左侧开始填补; 若 size 487 的绝对值小于或等于 arr 数组的长度则没有任何填补. 488 489 #### func (*LkkArray) ArrayRand 490 491 ```go 492 func (ka *LkkArray) ArrayRand(arr interface{}, num int) []interface{} 493 ``` 494 ArrayRand 从数组(切片/字典)中随机取出num个元素. 495 496 #### func (*LkkArray) ArrayReverse 497 498 ```go 499 func (ka *LkkArray) ArrayReverse(arr interface{}) []interface{} 500 ``` 501 ArrayReverse 返回单元顺序相反的数组(仅限数组和切片). 502 503 #### func (*LkkArray) ArraySearchItem 504 505 ```go 506 func (ka *LkkArray) ArraySearchItem(arr interface{}, condition map[string]interface{}) (res interface{}) 507 ``` 508 ArraySearchItem 从数组(切片/字典)中搜索对应元素(单个). arr为要查找的数组,元素必须为字典/结构体;condition为条件字典. 509 510 #### func (*LkkArray) ArraySearchMutil 511 512 ```go 513 func (ka *LkkArray) ArraySearchMutil(arr interface{}, condition map[string]interface{}) (res []interface{}) 514 ``` 515 ArraySearchMutil 从数组(切片/字典)中搜索对应元素(多个). arr为要查找的数组,元素必须为字典/结构体;condition为条件字典. 516 517 #### func (*LkkArray) ArrayShuffle 518 519 ```go 520 func (ka *LkkArray) ArrayShuffle(arr interface{}) []interface{} 521 ``` 522 ArrayShuffle 打乱数组/切片排序. 523 524 #### func (*LkkArray) ArrayUnique 525 526 ```go 527 func (ka *LkkArray) ArrayUnique(arr interface{}) map[interface{}]interface{} 528 ``` 529 ArrayUnique 移除数组(切片/字典)中重复的值,返回字典,保留键名. 530 531 #### func (*LkkArray) ArrayValues 532 533 ```go 534 func (ka *LkkArray) ArrayValues(arr interface{}, filterZero bool) []interface{} 535 ``` 536 ArrayValues 返回arr(数组/切片/字典/结构体)中所有的值;如果是结构体,只返回公开字段的值. filterZero 537 是否过滤零值元素(nil,false,0,"",[]),true时排除零值元素,false时保留零值元素. 538 539 #### func (*LkkArray) CutSlice 540 541 ```go 542 func (ka *LkkArray) CutSlice(arr interface{}, offset, size int) []interface{} 543 ``` 544 CutSlice 裁剪切片,返回根据offset(起始位置)和size(数量)参数所指定的arr(数组/切片)中的一段切片. 545 546 #### func (*LkkArray) DeleteSliceItems 547 548 ```go 549 func (ka *LkkArray) DeleteSliceItems(val interface{}, ids ...int) (res []interface{}, del int) 550 ``` 551 DeleteSliceItems 删除数组/切片的元素,返回一个新切片. ids为多个元素的索引(0~len(val)-1); del为删除元素的数量. 552 553 #### func (*LkkArray) Implode 554 555 ```go 556 func (ka *LkkArray) Implode(delimiter string, arr interface{}) string 557 ``` 558 Implode 用delimiter将数组(数组/切片/字典/结构体)的值连接为一个字符串. 559 560 #### func (*LkkArray) InArray 561 562 ```go 563 func (ka *LkkArray) InArray(needle interface{}, haystack interface{}) bool 564 ``` 565 InArray 元素needle是否在数组haystack(切片/字典)内. 566 567 #### func (*LkkArray) InInt64Slice 568 569 ```go 570 func (ka *LkkArray) InInt64Slice(i int64, list []int64) bool 571 ``` 572 InInt64Slice 是否在64位整型切片内. 573 574 #### func (*LkkArray) InIntSlice 575 576 ```go 577 func (ka *LkkArray) InIntSlice(i int, list []int) bool 578 ``` 579 InIntSlice 是否在整型切片内. 580 581 #### func (*LkkArray) InStringSlice 582 583 ```go 584 func (ka *LkkArray) InStringSlice(str string, list []string) bool 585 ``` 586 InStringSlice 是否在字符串切片内. 587 588 #### func (*LkkArray) IsArray 589 590 ```go 591 func (ka *LkkArray) IsArray(val interface{}) bool 592 ``` 593 IsArray 变量是否数组. 594 595 #### func (*LkkArray) IsArrayOrSlice 596 597 ```go 598 func (ka *LkkArray) IsArrayOrSlice(val interface{}) bool 599 ``` 600 IsArrayOrSlice 变量是否数组或切片. 601 602 #### func (*LkkArray) IsEqualArray 603 604 ```go 605 func (ka *LkkArray) IsEqualArray(arr1, arr2 interface{}) bool 606 ``` 607 IsEqualArray 两个数组/切片是否相同(不管元素顺序),且不会检查元素类型; arr1, arr2 是要比较的数组/切片. 608 609 #### func (*LkkArray) IsEqualMap 610 611 ```go 612 func (ka *LkkArray) IsEqualMap(arr1, arr2 interface{}) bool 613 ``` 614 IsEqualMap 两个字典是否相同(不管键顺序),且不会严格检查元素类型; arr1, arr2 是要比较的字典. 615 616 #### func (*LkkArray) IsMap 617 618 ```go 619 func (ka *LkkArray) IsMap(val interface{}) bool 620 ``` 621 IsMap 变量是否字典. 622 623 #### func (*LkkArray) IsSlice 624 625 ```go 626 func (ka *LkkArray) IsSlice(val interface{}) bool 627 ``` 628 IsSlice 变量是否切片. 629 630 #### func (*LkkArray) IsStruct 631 632 ```go 633 func (ka *LkkArray) IsStruct(val interface{}) bool 634 ``` 635 IsStruct 变量是否结构体. 636 637 #### func (*LkkArray) JoinInts 638 639 ```go 640 func (ka *LkkArray) JoinInts(delimiter string, ints []int) (res string) 641 ``` 642 JoinInts 使用分隔符delimiter连接整数切片. 643 644 #### func (*LkkArray) JoinStrings 645 646 ```go 647 func (ka *LkkArray) JoinStrings(delimiter string, strs []string) (res string) 648 ``` 649 JoinStrings 使用分隔符delimiter连接字符串切片strs.效率比Implode高. 650 651 #### func (*LkkArray) Length 652 653 ```go 654 func (ka *LkkArray) Length(val interface{}) int 655 ``` 656 Length 获取数组/切片的长度;结果为-1表示变量不是数组或切片. 657 658 #### func (*LkkArray) MergeMap 659 660 ```go 661 func (ka *LkkArray) MergeMap(ss ...interface{}) map[interface{}]interface{} 662 ``` 663 MergeMap 合并字典,相同的键名时,后面的值将覆盖前一个值. ss是元素为字典的切片. 664 665 #### func (*LkkArray) MergeSlice 666 667 ```go 668 func (ka *LkkArray) MergeSlice(filterZero bool, ss ...interface{}) []interface{} 669 ``` 670 MergeSlice 合并一个或多个数组/切片. filterZero 671 是否过滤零值元素(nil,false,0,'',[]),true时排除零值元素,false时保留零值元素. ss是元素为数组/切片的切片. 672 673 #### func (*LkkArray) NewStrMapItf 674 675 ```go 676 func (ka *LkkArray) NewStrMapItf() map[string]interface{} 677 ``` 678 NewStrMapItf 新建[字符-接口]字典. 679 680 #### func (*LkkArray) NewStrMapStr 681 682 ```go 683 func (ka *LkkArray) NewStrMapStr() map[string]string 684 ``` 685 NewStrMapStr 新建[字符-字符]字典. 686 687 #### func (*LkkArray) SliceFill 688 689 ```go 690 func (ka *LkkArray) SliceFill(val interface{}, num int) []interface{} 691 ``` 692 SliceFill 用给定的值val填充切片,num为插入元素的数量. 693 694 #### func (*LkkArray) SlicePop 695 696 ```go 697 func (ka *LkkArray) SlicePop(s *[]interface{}) interface{} 698 ``` 699 SlicePop 弹出切片最后一个元素(出栈),并返回该元素. 700 701 #### func (*LkkArray) SlicePush 702 703 ```go 704 func (ka *LkkArray) SlicePush(s *[]interface{}, elements ...interface{}) int 705 ``` 706 SlicePush 将一个或多个元素压入切片的末尾(入栈),返回处理之后切片的元素个数. 707 708 #### func (*LkkArray) SliceShift 709 710 ```go 711 func (ka *LkkArray) SliceShift(s *[]interface{}) interface{} 712 ``` 713 SliceShift 将切片开头的元素移出,并返回该元素. 714 715 #### func (*LkkArray) SliceUnshift 716 717 ```go 718 func (ka *LkkArray) SliceUnshift(s *[]interface{}, elements ...interface{}) int 719 ``` 720 SliceUnshift 在切片开头插入一个或多个元素,返回处理之后切片的元素个数. 721 722 #### func (*LkkArray) Unique64Ints 723 724 ```go 725 func (ka *LkkArray) Unique64Ints(ints []int64) (res []int64) 726 ``` 727 Unique64Ints 移除64位整数切片中的重复值. 728 729 #### func (*LkkArray) UniqueInts 730 731 ```go 732 func (ka *LkkArray) UniqueInts(ints []int) (res []int) 733 ``` 734 UniqueInts 移除整数切片中的重复值. 735 736 #### func (*LkkArray) UniqueStrings 737 738 ```go 739 func (ka *LkkArray) UniqueStrings(strs []string) (res []string) 740 ``` 741 UniqueStrings 移除字符串切片中的重复值. 742 743 #### type LkkCaseSwitch 744 745 ```go 746 type LkkCaseSwitch uint8 747 ``` 748 749 LkkCaseSwitch 枚举类型,大小写开关 750 751 #### type LkkConvert 752 753 ```go 754 type LkkConvert struct { 755 } 756 ``` 757 758 LkkConvert is the receiver of convert utilities 759 760 #### func (*LkkConvert) BaseConvert 761 762 ```go 763 func (kc *LkkConvert) BaseConvert(num string, frombase, tobase int) (string, error) 764 ``` 765 BaseConvert 进制转换,在任意进制之间转换数字. num为输入数值,frombase为原进制,tobase为结果进制. 766 767 #### func (*LkkConvert) Bin2Dec 768 769 ```go 770 func (kc *LkkConvert) Bin2Dec(str string) (int64, error) 771 ``` 772 Bin2Dec 将二进制字符串转换为十进制. 773 774 #### func (*LkkConvert) Bin2Hex 775 776 ```go 777 func (kc *LkkConvert) Bin2Hex(str string) (string, error) 778 ``` 779 Bin2Hex 将二进制字符串转换为十六进制字符串. 780 781 #### func (*LkkConvert) Bool2Int 782 783 ```go 784 func (kc *LkkConvert) Bool2Int(val bool) int 785 ``` 786 Bool2Int 将布尔值转换为整型. 787 788 #### func (*LkkConvert) Bool2Str 789 790 ```go 791 func (kc *LkkConvert) Bool2Str(val bool) string 792 ``` 793 Bool2Str 将布尔值转换为字符串. 794 795 #### func (*LkkConvert) Byte2Float64 796 797 ```go 798 func (kc *LkkConvert) Byte2Float64(bytes []byte) float64 799 ``` 800 Byte2Float64 字节切片转64位浮点数. 801 802 #### func (*LkkConvert) Byte2Hex 803 804 ```go 805 func (kc *LkkConvert) Byte2Hex(val []byte) string 806 ``` 807 Byte2Hex 字节切片转16进制字符串. 808 809 #### func (*LkkConvert) Byte2Hexs 810 811 ```go 812 func (kc *LkkConvert) Byte2Hexs(val []byte) []byte 813 ``` 814 Byte2Hexs 字节切片转16进制切片. 815 816 #### func (*LkkConvert) Byte2Int64 817 818 ```go 819 func (kc *LkkConvert) Byte2Int64(val []byte) int64 820 ``` 821 Byte2Int64 字节切片转64位整型. 822 823 #### func (*LkkConvert) Bytes2Str 824 825 ```go 826 func (kc *LkkConvert) Bytes2Str(val []byte) string 827 ``` 828 Bytes2Str 将字节切片转换为字符串. 829 830 #### func (*LkkConvert) Bytes2StrUnsafe 831 832 ```go 833 func (kc *LkkConvert) Bytes2StrUnsafe(val []byte) string 834 ``` 835 Bytes2StrUnsafe (非安全的)将字节切片转换为字符串. 836 零拷贝,不安全.效率是string([]byte{})的百倍以上,且转换量越大效率优势越明显. 837 838 #### func (*LkkConvert) Dec2Bin 839 840 ```go 841 func (kc *LkkConvert) Dec2Bin(num int64) string 842 ``` 843 Dec2Bin 将十进制转换为二进制字符串. 844 845 #### func (*LkkConvert) Dec2Hex 846 847 ```go 848 func (kc *LkkConvert) Dec2Hex(num int64) string 849 ``` 850 Dec2Hex 将十进制转换为十六进制. 851 852 #### func (*LkkConvert) Dec2Oct 853 854 ```go 855 func (kc *LkkConvert) Dec2Oct(num int64) string 856 ``` 857 Dec2Oct 将十进制转换为八进制. 858 859 #### func (*LkkConvert) Float2Str 860 861 ```go 862 func (kc *LkkConvert) Float2Str(val interface{}, decimal int) string 863 ``` 864 Float2Str 将浮点数转换为字符串,decimal为小数位数. 865 866 #### func (*LkkConvert) Float64ToByte 867 868 ```go 869 func (kc *LkkConvert) Float64ToByte(val float64) []byte 870 ``` 871 Float64ToByte 64位浮点数转字节切片. 872 873 #### func (*LkkConvert) Hex2Bin 874 875 ```go 876 func (kc *LkkConvert) Hex2Bin(str string) (string, error) 877 ``` 878 Hex2Bin 将十六进制字符串转换为二进制字符串. 879 880 #### func (*LkkConvert) Hex2Byte 881 882 ```go 883 func (kc *LkkConvert) Hex2Byte(str string) []byte 884 ``` 885 Hex2Byte 16进制字符串转字节切片. 886 887 #### func (*LkkConvert) Hex2Dec 888 889 ```go 890 func (kc *LkkConvert) Hex2Dec(str string) (int64, error) 891 ``` 892 Hex2Dec 将十六进制转换为十进制. 893 894 #### func (*LkkConvert) Hexs2Byte 895 896 ```go 897 func (kc *LkkConvert) Hexs2Byte(val []byte) []byte 898 ``` 899 Hexs2Byte 16进制切片转byte切片. 900 901 #### func (*LkkConvert) Int2Str 902 903 ```go 904 func (kc *LkkConvert) Int2Str(val interface{}) string 905 ``` 906 Int2Str 将整数转换为字符串. 907 908 #### func (*LkkConvert) Int64ToByte 909 910 ```go 911 func (kc *LkkConvert) Int64ToByte(val int64) []byte 912 ``` 913 Int64ToByte 64位整型转字节切片. 914 915 #### func (*LkkConvert) Ip2Long 916 917 ```go 918 func (kc *LkkConvert) Ip2Long(ipAddress string) uint32 919 ``` 920 Ip2Long 将 IPV4 的字符串互联网协议转换成长整型数字. 921 922 #### func (*LkkConvert) IsBinary 923 924 ```go 925 func (kc *LkkConvert) IsBinary(s string) bool 926 ``` 927 IsBinary 字符串是否二进制. 928 929 #### func (*LkkConvert) IsBool 930 931 ```go 932 func (kc *LkkConvert) IsBool(val interface{}) bool 933 ``` 934 IsBool 是否布尔值. 935 936 #### func (*LkkConvert) IsByte 937 938 ```go 939 func (kc *LkkConvert) IsByte(val interface{}) bool 940 ``` 941 IsByte 变量是否字节切片. 942 943 #### func (*LkkConvert) IsEmpty 944 945 ```go 946 func (kc *LkkConvert) IsEmpty(val interface{}) bool 947 ``` 948 IsEmpty 变量是否为空. 949 950 #### func (*LkkConvert) IsFloat 951 952 ```go 953 func (kc *LkkConvert) IsFloat(val interface{}) bool 954 ``` 955 IsFloat 变量是否浮点数值. 956 957 #### func (*LkkConvert) IsHex 958 959 ```go 960 func (kc *LkkConvert) IsHex(str string) bool 961 ``` 962 IsHex 是否十六进制字符串. 963 964 #### func (*LkkConvert) IsInt 965 966 ```go 967 func (kc *LkkConvert) IsInt(val interface{}) bool 968 ``` 969 IsInt 变量是否整型数值. 970 971 #### func (*LkkConvert) IsInterface 972 973 ```go 974 func (kc *LkkConvert) IsInterface(val interface{}) bool 975 ``` 976 IsInterface 变量是否接口. 977 978 #### func (*LkkConvert) IsNil 979 980 ```go 981 func (kc *LkkConvert) IsNil(val interface{}) bool 982 ``` 983 IsNil 变量是否nil. 984 985 #### func (*LkkConvert) IsNumeric 986 987 ```go 988 func (kc *LkkConvert) IsNumeric(val interface{}) bool 989 ``` 990 IsNumeric 变量是否数值(不包含复数和科学计数法). 991 992 #### func (*LkkConvert) IsPort 993 994 ```go 995 func (kc *LkkConvert) IsPort(val interface{}) bool 996 ``` 997 IsPort 变量值是否端口号(1~65535). 998 999 #### func (*LkkConvert) IsString 1000 1001 ```go 1002 func (kc *LkkConvert) IsString(val interface{}) bool 1003 ``` 1004 IsString 变量是否字符串. 1005 1006 #### func (*LkkConvert) IsStruct 1007 1008 ```go 1009 func (kc *LkkConvert) IsStruct(val interface{}) bool 1010 ``` 1011 IsStruct 变量是否结构体. 1012 1013 #### func (*LkkConvert) Long2Ip 1014 1015 ```go 1016 func (kc *LkkConvert) Long2Ip(properAddress uint32) string 1017 ``` 1018 Long2Ip 将长整型转化为字符串形式带点的互联网标准格式地址(IPV4). 1019 1020 #### func (*LkkConvert) Oct2Dec 1021 1022 ```go 1023 func (kc *LkkConvert) Oct2Dec(str string) (int64, error) 1024 ``` 1025 Oct2Dec 将八进制转换为十进制. 1026 1027 #### func (*LkkConvert) Runes2Bytes 1028 1029 ```go 1030 func (kc *LkkConvert) Runes2Bytes(rs []rune) []byte 1031 ``` 1032 Runes2Bytes 将[]rune转为[]byte. 1033 1034 #### func (*LkkConvert) Str2Bool 1035 1036 ```go 1037 func (kc *LkkConvert) Str2Bool(val string) bool 1038 ``` 1039 Str2Bool 将字符串转换为布尔值. 1, t, T, TRUE, true, True 等字符串为真; 0, f, F, FALSE, false, 1040 False 等字符串为假. 1041 1042 #### func (*LkkConvert) Str2Bytes 1043 1044 ```go 1045 func (kc *LkkConvert) Str2Bytes(val string) []byte 1046 ``` 1047 Str2Bytes 将字符串转换为字节切片. 1048 1049 #### func (*LkkConvert) Str2BytesUnsafe 1050 1051 ```go 1052 func (kc *LkkConvert) Str2BytesUnsafe(val string) []byte 1053 ``` 1054 Str2BytesUnsafe (非安全的)将字符串转换为字节切片. 该方法零拷贝,但不安全.它直接转换底层指针,两者指向的相同的内存,改一个另外一个也会变. 1055 仅当临时需将长字符串转换且不长时间保存时可以使用. 转换之后若没做其他操作直接改变里面的字符,则程序会崩溃. 如 1056 b:=Str2BytesUnsafe("xxx"); b[1]='d'; 程序将panic. 1057 1058 #### func (*LkkConvert) Str2Float32 1059 1060 ```go 1061 func (kc *LkkConvert) Str2Float32(val string) float32 1062 ``` 1063 Str2Float32 将字符串转换为float32;其中"true", "TRUE", "True"为1.0 . 1064 1065 #### func (*LkkConvert) Str2Float64 1066 1067 ```go 1068 func (kc *LkkConvert) Str2Float64(val string) float64 1069 ``` 1070 Str2Float64 将字符串转换为float64;其中"true", "TRUE", "True"为1.0 . 1071 1072 #### func (*LkkConvert) Str2Int 1073 1074 ```go 1075 func (kc *LkkConvert) Str2Int(val string) int 1076 ``` 1077 Str2Int 将字符串转换为int.其中"true", "TRUE", "True"为1;若为浮点字符串,则取整数部分. 1078 1079 #### func (*LkkConvert) Str2Int16 1080 1081 ```go 1082 func (kc *LkkConvert) Str2Int16(val string) int16 1083 ``` 1084 Str2Int16 将字符串转换为int16. 1085 1086 #### func (*LkkConvert) Str2Int32 1087 1088 ```go 1089 func (kc *LkkConvert) Str2Int32(val string) int32 1090 ``` 1091 Str2Int32 将字符串转换为int32. 1092 1093 #### func (*LkkConvert) Str2Int64 1094 1095 ```go 1096 func (kc *LkkConvert) Str2Int64(val string) int64 1097 ``` 1098 Str2Int64 将字符串转换为int64. 1099 1100 #### func (*LkkConvert) Str2Int8 1101 1102 ```go 1103 func (kc *LkkConvert) Str2Int8(val string) int8 1104 ``` 1105 Str2Int8 将字符串转换为int8. 1106 1107 #### func (*LkkConvert) Str2Uint 1108 1109 ```go 1110 func (kc *LkkConvert) Str2Uint(val string) uint 1111 ``` 1112 Str2Uint 将字符串转换为uint.其中"true", "TRUE", "True"为1;若为浮点字符串,则取整数部分;若为负值则取0. 1113 1114 #### func (*LkkConvert) Str2Uint16 1115 1116 ```go 1117 func (kc *LkkConvert) Str2Uint16(val string) uint16 1118 ``` 1119 Str2Uint16 将字符串转换为uint16. 1120 1121 #### func (*LkkConvert) Str2Uint32 1122 1123 ```go 1124 func (kc *LkkConvert) Str2Uint32(val string) uint32 1125 ``` 1126 Str2Uint32 将字符串转换为uint32. 1127 1128 #### func (*LkkConvert) Str2Uint64 1129 1130 ```go 1131 func (kc *LkkConvert) Str2Uint64(val string) uint64 1132 ``` 1133 Str2Uint64 将字符串转换为uint64. 1134 1135 #### func (*LkkConvert) Str2Uint8 1136 1137 ```go 1138 func (kc *LkkConvert) Str2Uint8(val string) uint8 1139 ``` 1140 Str2Uint8 将字符串转换为uint8. 1141 1142 #### func (*LkkConvert) Struct2Map 1143 1144 ```go 1145 func (kc *LkkConvert) Struct2Map(obj interface{}, tagName string) (map[string]interface{}, error) 1146 ``` 1147 Struct2Map 结构体转为字典;tagName为要导出的标签名,可以为空,为空时将导出所有字段. 1148 1149 #### func (*LkkConvert) ToBool 1150 1151 ```go 1152 func (kc *LkkConvert) ToBool(val interface{}) bool 1153 ``` 1154 ToBool 强制将变量转换为布尔值. 数值类型将检查值是否>0; 字符串将使用Str2Bool; 数组、切片、字典、通道类型将检查它们的长度是否>0; 1155 指针、结构体类型为true,其他为false. 1156 1157 #### func (*LkkConvert) ToFloat 1158 1159 ```go 1160 func (kc *LkkConvert) ToFloat(val interface{}) (res float64) 1161 ``` 1162 ToFloat 强制将变量转换为浮点型. 数值类型将转为浮点型; 字符串将使用Str2Float64; 布尔型的true为1.0,false为0; 1163 数组、切片、字典、通道类型将取它们的长度; 指针、结构体类型为1.0,其他为0. 1164 1165 #### func (*LkkConvert) ToInt 1166 1167 ```go 1168 func (kc *LkkConvert) ToInt(val interface{}) int 1169 ``` 1170 ToInt 强制将变量转换为整型. 数值类型将转为整型; 字符串类型将使用Str2Int; 布尔型的true为1,false为0; 1171 数组、切片、字典、通道类型将取它们的长度; 指针、结构体类型为1,其他为0. 1172 1173 #### func (*LkkConvert) ToStr 1174 1175 ```go 1176 func (kc *LkkConvert) ToStr(val interface{}) string 1177 ``` 1178 ToStr 强制将变量转换为字符串. 1179 1180 #### type LkkDebug 1181 1182 ```go 1183 type LkkDebug struct { 1184 } 1185 ``` 1186 1187 LkkDebug is the receiver of debug utilities 1188 1189 #### func (*LkkDebug) CallMethod 1190 1191 ```go 1192 func (kd *LkkDebug) CallMethod(t interface{}, method string, args ...interface{}) ([]interface{}, error) 1193 ``` 1194 CallMethod 调用对象的方法. 若执行成功,则结果是该方法的返回结果; 否则返回(nil, error). 1195 1196 #### func (*LkkDebug) DumpPrint 1197 1198 ```go 1199 func (ks *LkkDebug) DumpPrint(vs ...interface{}) 1200 ``` 1201 DumpPrint 打印调试变量. 1202 1203 #### func (*LkkDebug) DumpStacks 1204 1205 ```go 1206 func (kd *LkkDebug) DumpStacks() 1207 ``` 1208 DumpStacks 打印堆栈信息. 1209 1210 #### func (*LkkDebug) GetCallDir 1211 1212 ```go 1213 func (kd *LkkDebug) GetCallDir() string 1214 ``` 1215 GetCallDir 获取调用方法的文件目录. 1216 1217 #### func (*LkkDebug) GetCallFile 1218 1219 ```go 1220 func (kd *LkkDebug) GetCallFile() string 1221 ``` 1222 GetCallFile 获取调用方法的文件路径. 1223 1224 #### func (*LkkDebug) GetCallLine 1225 1226 ```go 1227 func (kd *LkkDebug) GetCallLine() int 1228 ``` 1229 GetCallLine 获取调用方法的行号. 1230 1231 #### func (*LkkDebug) GetCallName 1232 1233 ```go 1234 func (kd *LkkDebug) GetCallName(f interface{}, onlyFun bool) string 1235 ``` 1236 GetCallName 获取调用的方法名称;f为目标方法;onlyFun为true时仅返回方法,不包括包名. 1237 1238 #### func (*LkkDebug) GetCallPackage 1239 1240 ```go 1241 func (kd *LkkDebug) GetCallPackage(callFile ...string) string 1242 ``` 1243 GetCallPackage 获取调用方法或调用文件的包名.callFile为调用文件路径. 1244 1245 #### func (*LkkDebug) GetFuncNames 1246 1247 ```go 1248 func (kd *LkkDebug) GetFuncNames(obj interface{}) (res []string) 1249 ``` 1250 GetFuncNames 获取变量的所有(公开的)函数名. 1251 1252 #### func (*LkkDebug) GetMethod 1253 1254 ```go 1255 func (kd *LkkDebug) GetMethod(t interface{}, method string) interface{} 1256 ``` 1257 GetMethod 获取对象t中的method方法. 注意:返回的方法中的第一个参数是接收者. 所以,调用返回的方法时,必须将接收者作为第一个参数传递. 1258 1259 #### func (*LkkDebug) HasMethod 1260 1261 ```go 1262 func (kd *LkkDebug) HasMethod(t interface{}, method string) bool 1263 ``` 1264 HasMethod 检查对象t是否具有method方法. 1265 1266 #### type LkkEncrypt 1267 1268 ```go 1269 type LkkEncrypt struct { 1270 } 1271 ``` 1272 1273 LkkEncrypt is the receiver of encrypt utilities 1274 1275 #### func (*LkkEncrypt) AesCBCDecrypt 1276 1277 ```go 1278 func (ke *LkkEncrypt) AesCBCDecrypt(cipherText, key []byte, paddingType ...LkkPKCSType) ([]byte, error) 1279 ``` 1280 AesCBCDecrypt AES-CBC密码分组链接(Cipher-block chaining)模式解密. 1281 cipherText为密文;key为密钥,长16/24/32;paddingType为填充方式,枚举(PKCS_NONE,PKCS_ZERO,PKCS_SEVEN),默认PKCS_SEVEN. 1282 1283 #### func (*LkkEncrypt) AesCBCEncrypt 1284 1285 ```go 1286 func (ke *LkkEncrypt) AesCBCEncrypt(clearText, key []byte, paddingType ...LkkPKCSType) ([]byte, error) 1287 ``` 1288 AesCBCEncrypt AES-CBC密码分组链接(Cipher-block chaining)模式加密.加密无法并行,不适合对流数据加密. 1289 clearText为明文;key为密钥,长16/24/32;paddingType为填充方式,枚举(PKCS_ZERO,PKCS_SEVEN),默认PKCS_SEVEN. 1290 1291 #### func (*LkkEncrypt) AesCFBDecrypt 1292 1293 ```go 1294 func (ke *LkkEncrypt) AesCFBDecrypt(cipherText, key []byte) ([]byte, error) 1295 ``` 1296 AesCFBDecrypt AES-CFB密文反馈(Cipher feedback)模式解密. cipherText为密文;key为密钥,长16/24/32. 1297 1298 #### func (*LkkEncrypt) AesCFBEncrypt 1299 1300 ```go 1301 func (ke *LkkEncrypt) AesCFBEncrypt(clearText, key []byte) ([]byte, error) 1302 ``` 1303 AesCFBEncrypt AES-CFB密文反馈(Cipher feedback)模式加密.适合对流数据加密. 1304 clearText为明文;key为密钥,长16/24/32. 1305 1306 #### func (*LkkEncrypt) AesCTRDecrypt 1307 1308 ```go 1309 func (ke *LkkEncrypt) AesCTRDecrypt(cipherText, key []byte) ([]byte, error) 1310 ``` 1311 AesCTRDecrypt AES-CTR计算器(Counter)模式解密. cipherText为密文;key为密钥,长16/24/32. 1312 1313 #### func (*LkkEncrypt) AesCTREncrypt 1314 1315 ```go 1316 func (ke *LkkEncrypt) AesCTREncrypt(clearText, key []byte) ([]byte, error) 1317 ``` 1318 AesCTREncrypt AES-CTR计算器(Counter)模式加密. clearText为明文;key为密钥,长16/24/32. 1319 1320 #### func (*LkkEncrypt) AesOFBDecrypt 1321 1322 ```go 1323 func (ke *LkkEncrypt) AesOFBDecrypt(cipherText, key []byte) ([]byte, error) 1324 ``` 1325 AesOFBDecrypt AES-OFB输出反馈(Output feedback)模式解密. cipherText为密文;key为密钥,长16/24/32. 1326 1327 #### func (*LkkEncrypt) AesOFBEncrypt 1328 1329 ```go 1330 func (ke *LkkEncrypt) AesOFBEncrypt(clearText, key []byte) ([]byte, error) 1331 ``` 1332 AesOFBEncrypt AES-OFB输出反馈(Output feedback)模式加密.适合对流数据加密. 1333 clearText为明文;key为密钥,长16/24/32. 1334 1335 #### func (*LkkEncrypt) AuthCode 1336 1337 ```go 1338 func (ke *LkkEncrypt) AuthCode(str, key []byte, encode bool, expiry int64) ([]byte, int64) 1339 ``` 1340 AuthCode 授权码编码或解码;encode为true时编码,为false解码;expiry为有效期,秒;返回结果为加密/解密的字符串和有效期时间戳. 1341 1342 #### func (*LkkEncrypt) Base64Decode 1343 1344 ```go 1345 func (ke *LkkEncrypt) Base64Decode(str []byte) ([]byte, error) 1346 ``` 1347 Base64Decode 对使用 MIME base64 编码的数据进行解码. 1348 1349 #### func (*LkkEncrypt) Base64Encode 1350 1351 ```go 1352 func (ke *LkkEncrypt) Base64Encode(str []byte) []byte 1353 ``` 1354 Base64Encode 使用 MIME base64 对数据进行编码. 1355 1356 #### func (*LkkEncrypt) Base64UrlDecode 1357 1358 ```go 1359 func (ke *LkkEncrypt) Base64UrlDecode(str []byte) ([]byte, error) 1360 ``` 1361 Base64UrlDecode url安全的Base64Decode. 1362 1363 #### func (*LkkEncrypt) Base64UrlEncode 1364 1365 ```go 1366 func (ke *LkkEncrypt) Base64UrlEncode(str []byte) []byte 1367 ``` 1368 Base64UrlSafeEncode url安全的Base64Encode,没有'/'和'+'及结尾的'=' . 1369 1370 #### func (*LkkEncrypt) EasyDecrypt 1371 1372 ```go 1373 func (ke *LkkEncrypt) EasyDecrypt(val, key []byte) []byte 1374 ``` 1375 EasyDecrypt 简单解密. val为待解密的字符串,key为密钥. 1376 1377 #### func (*LkkEncrypt) EasyEncrypt 1378 1379 ```go 1380 func (ke *LkkEncrypt) EasyEncrypt(data, key []byte) []byte 1381 ``` 1382 EasyEncrypt 简单加密. data为要加密的原字符串,key为密钥. 1383 1384 #### func (*LkkEncrypt) GenerateRsaKeys 1385 1386 ```go 1387 func (ke *LkkEncrypt) GenerateRsaKeys(bits int) (private []byte, public []byte, err error) 1388 ``` 1389 GenerateRsaKeys 生成RSA密钥对.bits为密钥位数,通常为1024或2048. 1390 1391 #### func (*LkkEncrypt) HmacShaX 1392 1393 ```go 1394 func (ke *LkkEncrypt) HmacShaX(data, secret []byte, x uint16) []byte 1395 ``` 1396 HmacShaX HmacSHA-x加密,x为1/256/512 . 1397 1398 #### func (*LkkEncrypt) PasswordHash 1399 1400 ```go 1401 func (ke *LkkEncrypt) PasswordHash(password []byte, costs ...int) ([]byte, error) 1402 ``` 1403 PasswordHash 创建密码的散列值;costs为算法的cost,范围4~31,默认10;注意:值越大越耗时. 1404 1405 #### func (*LkkEncrypt) PasswordVerify 1406 1407 ```go 1408 func (ke *LkkEncrypt) PasswordVerify(password, hash []byte) bool 1409 ``` 1410 PasswordVerify 验证密码是否和散列值匹配. 1411 1412 #### func (*LkkEncrypt) RsaPrivateDecrypt 1413 1414 ```go 1415 func (ke *LkkEncrypt) RsaPrivateDecrypt(cipherText, privateKey []byte) ([]byte, error) 1416 ``` 1417 RsaPrivateDecrypt RSA私钥解密.比加密耗时. cipherText为密文,privateKey为私钥. 1418 1419 #### func (*LkkEncrypt) RsaPrivateEncrypt 1420 1421 ```go 1422 func (ke *LkkEncrypt) RsaPrivateEncrypt(clearText, privateKey []byte) ([]byte, error) 1423 ``` 1424 RsaPrivateEncrypt RSA私钥加密.比解密耗时. clearText为明文,privateKey为私钥. 1425 1426 #### func (*LkkEncrypt) RsaPublicDecrypt 1427 1428 ```go 1429 func (ke *LkkEncrypt) RsaPublicDecrypt(cipherText, publicKey []byte) ([]byte, error) 1430 ``` 1431 RsaPublicDecrypt RSA公钥解密. cipherText为密文,publicKey为公钥. 1432 1433 #### func (*LkkEncrypt) RsaPublicEncrypt 1434 1435 ```go 1436 func (ke *LkkEncrypt) RsaPublicEncrypt(clearText, publicKey []byte) ([]byte, error) 1437 ``` 1438 RsaPublicEncrypt RSA公钥加密. clearText为明文,publicKey为公钥. 1439 1440 #### type LkkFile 1441 1442 ```go 1443 type LkkFile struct { 1444 } 1445 ``` 1446 1447 LkkFile is the receiver of file utilities 1448 1449 #### func (*LkkFile) AbsPath 1450 1451 ```go 1452 func (kf *LkkFile) AbsPath(fpath string) string 1453 ``` 1454 AbsPath 获取绝对路径,path可允许不存在. 1455 1456 #### func (*LkkFile) AppendFile 1457 1458 ```go 1459 func (kf *LkkFile) AppendFile(fpath string, data []byte) error 1460 ``` 1461 AppendFile 插入文件内容. 1462 1463 #### func (*LkkFile) Basename 1464 1465 ```go 1466 func (kf *LkkFile) Basename(fpath string) string 1467 ``` 1468 Basename 返回路径中的文件名部分(包括后缀),空路径时返回".". 1469 1470 #### func (*LkkFile) ChmodBatch 1471 1472 ```go 1473 func (kf *LkkFile) ChmodBatch(fpath string, filemode, dirmode os.FileMode) (res bool) 1474 ``` 1475 ChmodBatch 批量改变路径权限模式(包括子目录和所属文件). filemode为文件权限模式,dirmode为目录权限模式. 1476 1477 #### func (*LkkFile) CopyDir 1478 1479 ```go 1480 func (kf *LkkFile) CopyDir(source string, dest string, cover LkkFileCover) (int64, error) 1481 ``` 1482 CopyDir 拷贝源目录到目标目录,cover为枚举(FILE_COVER_ALLOW、FILE_COVER_IGNORE、FILE_COVER_DENY). 1483 1484 #### func (*LkkFile) CopyFile 1485 1486 ```go 1487 func (kf *LkkFile) CopyFile(source string, dest string, cover LkkFileCover) (int64, error) 1488 ``` 1489 CopyFile 1490 拷贝源文件到目标文件,cover为枚举(FILE_COVER_ALLOW、FILE_COVER_IGNORE、FILE_COVER_DENY). 1491 1492 #### func (*LkkFile) CopyLink 1493 1494 ```go 1495 func (kf *LkkFile) CopyLink(source string, dest string) error 1496 ``` 1497 CopyLink 拷贝链接. 1498 1499 #### func (*LkkFile) CountLines 1500 1501 ```go 1502 func (kf *LkkFile) CountLines(fpath string, buffLength int) (int, error) 1503 ``` 1504 CountLines 统计文件行数.buffLength为缓冲长度,kb. 1505 1506 #### func (*LkkFile) DelDir 1507 1508 ```go 1509 func (kf *LkkFile) DelDir(dir string, delete bool) error 1510 ``` 1511 DelDir 删除目录.delete为true时连该目录一起删除;为false时只清空该目录. 1512 1513 #### func (*LkkFile) DirSize 1514 1515 ```go 1516 func (kf *LkkFile) DirSize(fpath string) int64 1517 ``` 1518 DirSize 获取目录大小(bytes字节). 1519 1520 #### func (*LkkFile) Dirname 1521 1522 ```go 1523 func (kf *LkkFile) Dirname(fpath string) string 1524 ``` 1525 Dirname 返回路径中的目录部分,注意空路径或无目录的返回".". 1526 1527 #### func (*LkkFile) FastCopy 1528 1529 ```go 1530 func (kf *LkkFile) FastCopy(source string, dest string) (int64, error) 1531 ``` 1532 FastCopy 快速拷贝源文件到目标文件,不做安全检查. 1533 1534 #### func (*LkkFile) FileSize 1535 1536 ```go 1537 func (kf *LkkFile) FileSize(fpath string) int64 1538 ``` 1539 FileSize 获取文件大小(bytes字节);注意:文件不存在或无法访问时返回-1 . 1540 1541 #### func (*LkkFile) FileTree 1542 1543 ```go 1544 func (kf *LkkFile) FileTree(fpath string, ftype LkkFileTree, recursive bool, filters ...FileFilter) []string 1545 ``` 1546 FileTree 获取目录的文件树列表. ftype为枚举(FILE_TREE_ALL、FILE_TREE_DIR、FILE_TREE_FILE); 1547 recursive为是否递归; filters为一个或多个文件过滤器函数,FileFilter类型. 1548 1549 #### func (*LkkFile) FormatDir 1550 1551 ```go 1552 func (kf *LkkFile) FormatDir(fpath string) string 1553 ``` 1554 FormatDir 格式化目录,将"\","//"替换为"/",且以"/"结尾. 1555 1556 #### func (*LkkFile) FormatPath 1557 1558 ```go 1559 func (kf *LkkFile) FormatPath(fpath string) string 1560 ``` 1561 FormatPath 格式化路径. 1562 1563 #### func (*LkkFile) GetExt 1564 1565 ```go 1566 func (kf *LkkFile) GetExt(fpath string) string 1567 ``` 1568 GetExt 获取文件的小写扩展名,不包括点"." . 1569 1570 #### func (*LkkFile) GetFileMode 1571 1572 ```go 1573 func (kf *LkkFile) GetFileMode(fpath string) (os.FileMode, error) 1574 ``` 1575 GetFileMode 获取路径的权限模式. 1576 1577 #### func (*LkkFile) GetMime 1578 1579 ```go 1580 func (kf *LkkFile) GetMime(fpath string, fast bool) string 1581 ``` 1582 GetMime 获取文件mime类型;fast为true时根据后缀快速获取;为false时读取文件头获取. 1583 1584 #### func (*LkkFile) GetModTime 1585 1586 ```go 1587 func (kf *LkkFile) GetModTime(fpath string) (res int64) 1588 ``` 1589 GetModTime 获取文件的修改时间戳,秒. 1590 1591 #### func (*LkkFile) Glob 1592 1593 ```go 1594 func (kf *LkkFile) Glob(pattern string) ([]string, error) 1595 ``` 1596 Glob 寻找与模式匹配的文件路径. 1597 1598 #### func (*LkkFile) Img2Base64 1599 1600 ```go 1601 func (kf *LkkFile) Img2Base64(fpath string) (string, error) 1602 ``` 1603 Img2Base64 读取图片文件,并转换为base64字符串. 1604 1605 #### func (*LkkFile) IsBinary 1606 1607 ```go 1608 func (kf *LkkFile) IsBinary(fpath string) bool 1609 ``` 1610 IsBinary 是否二进制文件(且存在). 1611 1612 #### func (*LkkFile) IsDir 1613 1614 ```go 1615 func (kf *LkkFile) IsDir(fpath string) bool 1616 ``` 1617 IsDir 是否目录(且存在). 1618 1619 #### func (*LkkFile) IsExecutable 1620 1621 ```go 1622 func (kf *LkkFile) IsExecutable(fpath string) bool 1623 ``` 1624 IsExecutable 是否可执行文件. 1625 1626 #### func (*LkkFile) IsExist 1627 1628 ```go 1629 func (kf *LkkFile) IsExist(fpath string) bool 1630 ``` 1631 IsExist 路径(文件/目录)是否存在. 1632 1633 #### func (*LkkFile) IsFile 1634 1635 ```go 1636 func (kf *LkkFile) IsFile(fpath string, ftype ...LkkFileType) (res bool) 1637 ``` 1638 IsFile 是否(某类型)文件,且存在. 1639 ftype为枚举(FILE_TYPE_ANY、FILE_TYPE_LINK、FILE_TYPE_REGULAR、FILE_TYPE_COMMON),默认FILE_TYPE_ANY; 1640 1641 #### func (*LkkFile) IsImg 1642 1643 ```go 1644 func (kf *LkkFile) IsImg(fpath string) bool 1645 ``` 1646 IsImg 是否图片文件(仅检查后缀). 1647 1648 #### func (*LkkFile) IsLink 1649 1650 ```go 1651 func (kf *LkkFile) IsLink(fpath string) bool 1652 ``` 1653 IsLink 是否链接文件(软链接,且存在). 1654 1655 #### func (*LkkFile) IsReadable 1656 1657 ```go 1658 func (kf *LkkFile) IsReadable(fpath string) bool 1659 ``` 1660 IsReadable 路径是否可读. 1661 1662 #### func (*LkkFile) IsWritable 1663 1664 ```go 1665 func (kf *LkkFile) IsWritable(fpath string) bool 1666 ``` 1667 IsWritable 路径是否可写. 1668 1669 #### func (*LkkFile) IsZip 1670 1671 ```go 1672 func (kf *LkkFile) IsZip(fpath string) bool 1673 ``` 1674 IsZip 是否zip文件. 1675 1676 #### func (*LkkFile) Md5 1677 1678 ```go 1679 func (kf *LkkFile) Md5(fpath string, length uint8) (string, error) 1680 ``` 1681 Md5 获取文件md5值,length指定结果长度32/16. 1682 1683 #### func (*LkkFile) Mkdir 1684 1685 ```go 1686 func (kf *LkkFile) Mkdir(fpath string, mode os.FileMode) error 1687 ``` 1688 Mkdir 创建目录,允许多级. 1689 1690 #### func (*LkkFile) Pathinfo 1691 1692 ```go 1693 func (kf *LkkFile) Pathinfo(fpath string, option int) map[string]string 1694 ``` 1695 Pathinfo 获取文件路径的信息. option为要返回的信息,枚举值如下: -1: all; 1: dirname; 2: basename; 4: 1696 extension; 8: filename; 若要查看某几项,则为它们之间的和. 1697 1698 #### func (*LkkFile) ReadFile 1699 1700 ```go 1701 func (kf *LkkFile) ReadFile(fpath string) ([]byte, error) 1702 ``` 1703 ReadFile 读取文件内容. 1704 1705 #### func (*LkkFile) ReadFirstLine 1706 1707 ```go 1708 func (kf *LkkFile) ReadFirstLine(fpath string) []byte 1709 ``` 1710 ReadFirstLine 读取文件首行. 1711 1712 #### func (*LkkFile) ReadInArray 1713 1714 ```go 1715 func (kf *LkkFile) ReadInArray(fpath string) ([]string, error) 1716 ``` 1717 ReadInArray 把整个文件读入一个数组中,每行作为一个元素. 1718 1719 #### func (*LkkFile) ReadLastLine 1720 1721 ```go 1722 func (kf *LkkFile) ReadLastLine(fpath string) []byte 1723 ``` 1724 ReadLastLine 读取文件末行. 1725 1726 #### func (*LkkFile) RealPath 1727 1728 ```go 1729 func (kf *LkkFile) RealPath(fpath string) string 1730 ``` 1731 RealPath 返回规范化的真实绝对路径名.path必须存在,若路径不存在则返回空字符串. 1732 1733 #### func (*LkkFile) Rename 1734 1735 ```go 1736 func (kf *LkkFile) Rename(oldname, newname string) error 1737 ``` 1738 Rename 重命名(或移动)文件/目录. 1739 1740 #### func (*LkkFile) SafeFileName 1741 1742 ```go 1743 func (kf *LkkFile) SafeFileName(str string) string 1744 ``` 1745 SafeFileName 将文件名转换为安全可用的字符串. 1746 1747 #### func (*LkkFile) ShaX 1748 1749 ```go 1750 func (kf *LkkFile) ShaX(fpath string, x uint16) (string, error) 1751 ``` 1752 ShaX 计算文件的 shaX 散列值,x为1/256/512. 1753 1754 #### func (*LkkFile) TarGz 1755 1756 ```go 1757 func (kf *LkkFile) TarGz(src string, dstTar string, ignorePatterns ...string) (bool, error) 1758 ``` 1759 TarGz 打包压缩tar.gz. src为源文件或目录,dstTar为打包的路径名,ignorePatterns为要忽略的文件正则. 1760 1761 #### func (*LkkFile) Touch 1762 1763 ```go 1764 func (kf *LkkFile) Touch(fpath string, size int64) bool 1765 ``` 1766 Touch 快速创建指定大小的文件,size为字节. 1767 1768 #### func (*LkkFile) UnTarGz 1769 1770 ```go 1771 func (kf *LkkFile) UnTarGz(srcTar, dstDir string) (bool, error) 1772 ``` 1773 UnTarGz 将tar.gz文件解压缩. srcTar为压缩包,dstDir为解压目录. 1774 1775 #### func (*LkkFile) UnZip 1776 1777 ```go 1778 func (kf *LkkFile) UnZip(srcZip, dstDir string) (bool, error) 1779 ``` 1780 UnZip 解压zip文件.srcZip为zip文件路径,dstDir为解压目录. 1781 1782 #### func (*LkkFile) Unlink 1783 1784 ```go 1785 func (kf *LkkFile) Unlink(fpath string) error 1786 ``` 1787 Unlink 删除文件. 1788 1789 #### func (*LkkFile) WriteFile 1790 1791 ```go 1792 func (kf *LkkFile) WriteFile(fpath string, data []byte, perm ...os.FileMode) error 1793 ``` 1794 WriteFile 将内容写入文件. fpath为文件路径;data为内容;perm为权限,默认为0655. 1795 1796 #### func (*LkkFile) Zip 1797 1798 ```go 1799 func (kf *LkkFile) Zip(dst string, fpaths ...string) (bool, error) 1800 ``` 1801 Zip 将文件或目录进行zip打包.fpaths为源文件或目录的路径. 1802 1803 #### type LkkFileCover 1804 1805 ```go 1806 type LkkFileCover int8 1807 ``` 1808 1809 LkkFileCover 枚举类型,文件是否覆盖 1810 1811 #### type LkkFileTree 1812 1813 ```go 1814 type LkkFileTree uint8 1815 ``` 1816 1817 LkkFileTree 枚举类型,文件树查找类型 1818 1819 #### type LkkFileType 1820 1821 ```go 1822 type LkkFileType uint8 1823 ``` 1824 1825 LkkFileType 枚举类型,文件类型 1826 1827 #### type LkkNumber 1828 1829 ```go 1830 type LkkNumber struct { 1831 } 1832 ``` 1833 1834 LkkNumber is the receiver of number utilities 1835 1836 #### func (*LkkNumber) AbsFloat 1837 1838 ```go 1839 func (kn *LkkNumber) AbsFloat(number float64) float64 1840 ``` 1841 AbsFloat 浮点型取绝对值. 1842 1843 #### func (*LkkNumber) AbsInt 1844 1845 ```go 1846 func (kn *LkkNumber) AbsInt(number int64) int64 1847 ``` 1848 AbsInt 整型取绝对值. 1849 1850 #### func (*LkkNumber) Average 1851 1852 ```go 1853 func (kn *LkkNumber) Average(nums ...interface{}) (res float64) 1854 ``` 1855 Average 对任意类型序列中的数值类型求平均值,忽略非数值的. 1856 1857 #### func (*LkkNumber) AverageFloat64 1858 1859 ```go 1860 func (kn *LkkNumber) AverageFloat64(nums ...float64) (res float64) 1861 ``` 1862 AverageFloat64 对浮点数序列求平均值. 1863 1864 #### func (*LkkNumber) AverageInt 1865 1866 ```go 1867 func (kn *LkkNumber) AverageInt(nums ...int) (res float64) 1868 ``` 1869 AverageInt 对整数序列求平均值. 1870 1871 #### func (*LkkNumber) ByteFormat 1872 1873 ```go 1874 func (kn *LkkNumber) ByteFormat(size float64, decimal uint8, delimiter string) string 1875 ``` 1876 ByteFormat 格式化文件比特大小. size为文件大小,decimal为要保留的小数位数,delimiter为数字和单位间的分隔符. 1877 1878 #### func (*LkkNumber) Ceil 1879 1880 ```go 1881 func (kn *LkkNumber) Ceil(value float64) float64 1882 ``` 1883 Ceil 向上取整. 1884 1885 #### func (*LkkNumber) Exp 1886 1887 ```go 1888 func (kn *LkkNumber) Exp(x float64) float64 1889 ``` 1890 Exp 计算 e 的指数. 1891 1892 #### func (*LkkNumber) Expm1 1893 1894 ```go 1895 func (kn *LkkNumber) Expm1(x float64) float64 1896 ``` 1897 Expm1 返回 exp(x) - 1. 1898 1899 #### func (*LkkNumber) FloatEqual 1900 1901 ```go 1902 func (kn *LkkNumber) FloatEqual(f1 float64, f2 float64, decimal ...uint8) (res bool) 1903 ``` 1904 FloatEqual 比较两个浮点数是否相等.decimal为小数精确位数,默认为 FLOAT_DECIMAL . 1905 有效数值是长度(包括小数点)为17位之内的数值,最后一位会四舍五入. 1906 1907 #### func (*LkkNumber) Floor 1908 1909 ```go 1910 func (kn *LkkNumber) Floor(value float64) float64 1911 ``` 1912 Floor 向下取整. 1913 1914 #### func (*LkkNumber) GeoDistance 1915 1916 ```go 1917 func (kn *LkkNumber) GeoDistance(lng1, lat1, lng2, lat2 float64) float64 1918 ``` 1919 GeoDistance 获取地理距离/米. 参数分别为两点的经度和纬度:lat:-90~90,lng:-180~180. 1920 1921 #### func (*LkkNumber) InRange 1922 1923 ```go 1924 func (kn *LkkNumber) InRange(value interface{}, left interface{}, right interface{}) bool 1925 ``` 1926 InRange 数值是否在某个范围内,将自动转换类型再比较. 1927 1928 #### func (*LkkNumber) InRangeFloat32 1929 1930 ```go 1931 func (kn *LkkNumber) InRangeFloat32(value, left, right float32) bool 1932 ``` 1933 InRangeFloat32 数值是否在2个32位浮点数范围内. 1934 1935 #### func (*LkkNumber) InRangeFloat64 1936 1937 ```go 1938 func (kn *LkkNumber) InRangeFloat64(value, left, right float64) bool 1939 ``` 1940 InRangeFloat64 数值是否在2个64位浮点数范围内. 1941 1942 #### func (*LkkNumber) InRangeInt 1943 1944 ```go 1945 func (kn *LkkNumber) InRangeInt(value, left, right int) bool 1946 ``` 1947 InRangeInt 数值是否在2个整数范围内. 1948 1949 #### func (*LkkNumber) IsEven 1950 1951 ```go 1952 func (kn *LkkNumber) IsEven(val int) bool 1953 ``` 1954 IsEven 变量是否偶数. 1955 1956 #### func (*LkkNumber) IsNan 1957 1958 ```go 1959 func (kn *LkkNumber) IsNan(val interface{}) bool 1960 ``` 1961 IsNan 是否为“非数值”.注意,这里复数也算“非数值”. 1962 1963 #### func (*LkkNumber) IsNatural 1964 1965 ```go 1966 func (kn *LkkNumber) IsNatural(value float64) bool 1967 ``` 1968 IsNatural 数值是否为自然数(包括0). 1969 1970 #### func (*LkkNumber) IsNaturalRange 1971 1972 ```go 1973 func (kn *LkkNumber) IsNaturalRange(arr []int, strict bool) (res bool) 1974 ``` 1975 IsNaturalRange 是否连续的自然数数组/切片,如[0,1,2,3...],其中不能有间断. strict为是否严格检查元素的顺序. 1976 1977 #### func (*LkkNumber) IsNegative 1978 1979 ```go 1980 func (kn *LkkNumber) IsNegative(value float64) bool 1981 ``` 1982 IsNegative 数值是否为负数. 1983 1984 #### func (*LkkNumber) IsNonNegative 1985 1986 ```go 1987 func (kn *LkkNumber) IsNonNegative(value float64) bool 1988 ``` 1989 IsNonNegative 数值是否为非负数. 1990 1991 #### func (*LkkNumber) IsNonPositive 1992 1993 ```go 1994 func (kn *LkkNumber) IsNonPositive(value float64) bool 1995 ``` 1996 IsNonPositive 数值是否为非正数. 1997 1998 #### func (*LkkNumber) IsOdd 1999 2000 ```go 2001 func (kn *LkkNumber) IsOdd(val int) bool 2002 ``` 2003 IsOdd 变量是否奇数. 2004 2005 #### func (*LkkNumber) IsPositive 2006 2007 ```go 2008 func (kn *LkkNumber) IsPositive(value float64) bool 2009 ``` 2010 IsPositive 数值是否为正数. 2011 2012 #### func (*LkkNumber) IsWhole 2013 2014 ```go 2015 func (kn *LkkNumber) IsWhole(value float64) bool 2016 ``` 2017 IsWhole 数值是否为整数. 2018 2019 #### func (*LkkNumber) Log 2020 2021 ```go 2022 func (kn *LkkNumber) Log(x, y float64) float64 2023 ``` 2024 Log 对数表达式,求以y为底x的对数. 2025 2026 #### func (*LkkNumber) Max 2027 2028 ```go 2029 func (kn *LkkNumber) Max(nums ...interface{}) (res float64) 2030 ``` 2031 Max 取出任意类型中数值类型的最大值,无数值类型则为0. 2032 2033 #### func (*LkkNumber) MaxFloat64 2034 2035 ```go 2036 func (kn *LkkNumber) MaxFloat64(nums ...float64) (res float64) 2037 ``` 2038 MaxFloat64 64位浮点数序列求最大值. 2039 2040 #### func (*LkkNumber) MaxInt 2041 2042 ```go 2043 func (kn *LkkNumber) MaxInt(nums ...int) (res int) 2044 ``` 2045 MaxInt 整数序列求最大值. 2046 2047 #### func (*LkkNumber) Min 2048 2049 ```go 2050 func (kn *LkkNumber) Min(nums ...interface{}) (res float64) 2051 ``` 2052 Min 取出任意类型中数值类型的最小值,无数值类型则为0. 2053 2054 #### func (*LkkNumber) MinFloat64 2055 2056 ```go 2057 func (kn *LkkNumber) MinFloat64(nums ...float64) (res float64) 2058 ``` 2059 MinFloat64 64位浮点数序列求最小值. 2060 2061 #### func (*LkkNumber) MinInt 2062 2063 ```go 2064 func (kn *LkkNumber) MinInt(nums ...int) (res int) 2065 ``` 2066 MinInt 整数序列求最小值. 2067 2068 #### func (*LkkNumber) NearLogarithm 2069 2070 ```go 2071 func (kn *LkkNumber) NearLogarithm(num, base int, left bool) int 2072 ``` 2073 NearLogarithm 求以 base 为底 num 的对数临近值. num为自然数,base为正整数,left是否向左取整. 2074 2075 #### func (*LkkNumber) NumSign 2076 2077 ```go 2078 func (kn *LkkNumber) NumSign(value float64) (res int8) 2079 ``` 2080 NumSign 返回数值的符号.值>0为1,<0为-1,其他为0. 2081 2082 #### func (*LkkNumber) NumberFormat 2083 2084 ```go 2085 func (kn *LkkNumber) NumberFormat(number float64, decimal uint8, point, thousand string) string 2086 ``` 2087 NumberFormat 以千位分隔符方式格式化一个数字. 2088 decimal为要保留的小数位数,point为小数点显示的字符,thousand为千位分隔符显示的字符. 2089 有效数值是长度(包括小数点)为17位之内的数值,最后一位会四舍五入. 2090 2091 #### func (*LkkNumber) Percent 2092 2093 ```go 2094 func (kn *LkkNumber) Percent(val, total interface{}) float64 2095 ``` 2096 Percent 返回百分比((val/total) *100). 2097 2098 #### func (*LkkNumber) Pow 2099 2100 ```go 2101 func (kn *LkkNumber) Pow(x, y float64) float64 2102 ``` 2103 Pow 指数表达式,求x的y次方. 2104 2105 #### func (*LkkNumber) Rand 2106 2107 ```go 2108 func (kn *LkkNumber) Rand(min, max int) int 2109 ``` 2110 Rand RandInt的别名. 2111 2112 #### func (*LkkNumber) RandFloat64 2113 2114 ```go 2115 func (kn *LkkNumber) RandFloat64(min, max float64) float64 2116 ``` 2117 RandFloat64 生成一个min~max范围内的随机float64浮点数. 2118 2119 #### func (*LkkNumber) RandInt 2120 2121 ```go 2122 func (kn *LkkNumber) RandInt(min, max int) int 2123 ``` 2124 RandInt 生成一个min~max范围内的随机int整数. 2125 2126 #### func (*LkkNumber) RandInt64 2127 2128 ```go 2129 func (kn *LkkNumber) RandInt64(min, max int64) int64 2130 ``` 2131 RandInt64 生成一个min~max范围内的随机int64整数. 2132 2133 #### func (*LkkNumber) Range 2134 2135 ```go 2136 func (kn *LkkNumber) Range(start, end int) []int 2137 ``` 2138 Range 根据范围创建数组,包含指定的元素. 2139 start为起始元素值,end为末尾元素值.若start<end,返回升序的数组;若start>end,返回降序的数组. 2140 2141 #### func (*LkkNumber) Round 2142 2143 ```go 2144 func (kn *LkkNumber) Round(value float64) float64 2145 ``` 2146 Round 对浮点数(的整数)进行四舍五入. 2147 2148 #### func (*LkkNumber) RoundPlus 2149 2150 ```go 2151 func (kn *LkkNumber) RoundPlus(value float64, precision uint8) float64 2152 ``` 2153 RoundPlus 对指定的小数位进行四舍五入. precision为小数位数. 2154 2155 #### func (*LkkNumber) SplitNaturalNum 2156 2157 ```go 2158 func (kn *LkkNumber) SplitNaturalNum(num, base int) []int 2159 ``` 2160 SplitNaturalNum 将自然数 num 按底数 base 进行拆解. 2161 2162 #### func (*LkkNumber) Sum 2163 2164 ```go 2165 func (kn *LkkNumber) Sum(nums ...interface{}) (res float64) 2166 ``` 2167 Sum 对任意类型序列中的数值类型求和,忽略非数值的. 2168 2169 #### func (*LkkNumber) SumFloat64 2170 2171 ```go 2172 func (kn *LkkNumber) SumFloat64(nums ...float64) float64 2173 ``` 2174 SumFloat64 浮点数求和. 2175 2176 #### func (*LkkNumber) SumInt 2177 2178 ```go 2179 func (kn *LkkNumber) SumInt(nums ...int) int 2180 ``` 2181 SumInt 整数求和. 2182 2183 #### type LkkOS 2184 2185 ```go 2186 type LkkOS struct { 2187 } 2188 ``` 2189 2190 LkkOS is the receiver of OS utilities 2191 2192 #### func (*LkkOS) Chdir 2193 2194 ```go 2195 func (ko *LkkOS) Chdir(dir string) error 2196 ``` 2197 Chdir 改变/进入新的工作目录. 2198 2199 #### func (*LkkOS) Chmod 2200 2201 ```go 2202 func (ko *LkkOS) Chmod(filename string, mode os.FileMode) bool 2203 ``` 2204 Chmod 改变文件模式. 2205 2206 #### func (*LkkOS) Chown 2207 2208 ```go 2209 func (ko *LkkOS) Chown(filename string, uid, gid int) bool 2210 ``` 2211 Chown 改变文件的所有者. 2212 2213 #### func (*LkkOS) ClientIp 2214 2215 ```go 2216 func (ko *LkkOS) ClientIp(req *http.Request) string 2217 ``` 2218 ClientIp 获取客户端真实IP,req为http请求. 2219 2220 #### func (*LkkOS) CpuUsage 2221 2222 ```go 2223 func (ko *LkkOS) CpuUsage() (user, idle, total uint64) 2224 ``` 2225 CpuUsage 获取CPU使用率(darwin系统必须使用cgo),单位jiffies(节拍数). user为用户态(用户进程)的运行时间, 2226 idle为空闲时间, total为累计时间. 2227 2228 #### func (*LkkOS) DiskUsage 2229 2230 ```go 2231 func (ko *LkkOS) DiskUsage(path string) (used, free, total uint64) 2232 ``` 2233 DiskUsage 获取磁盘(目录)使用情况,单位字节.参数path为路径. used为已用, free为空闲, total为总数. 2234 2235 #### func (*LkkOS) Exec 2236 2237 ```go 2238 func (ko *LkkOS) Exec(command string) (retInt int, outStr, errStr []byte) 2239 ``` 2240 Exec 执行一个外部命令. retInt为1时失败,为0时成功;outStr为执行命令的输出;errStr为错误输出. 命令如 "ls -a" 2241 "/bin/bash -c \"ls -a\"" 2242 2243 #### func (*LkkOS) ForceGC 2244 2245 ```go 2246 func (ko *LkkOS) ForceGC() 2247 ``` 2248 ForceGC 强制手动GC垃圾回收(阻塞). 2249 2250 #### func (*LkkOS) GetBiosInfo 2251 2252 ```go 2253 func (ko *LkkOS) GetBiosInfo() *BiosInfo 2254 ``` 2255 GetBiosInfo 获取BIOS信息. 注意:Mac机器没有BIOS信息,它使用EFI. 2256 2257 #### func (*LkkOS) GetBoardInfo 2258 2259 ```go 2260 func (ko *LkkOS) GetBoardInfo() *BoardInfo 2261 ``` 2262 GetBoardInfo 获取Board信息. 2263 2264 #### func (*LkkOS) GetCpuInfo 2265 2266 ```go 2267 func (ko *LkkOS) GetCpuInfo() *CpuInfo 2268 ``` 2269 GetCpuInfo 获取CPU信息. 2270 2271 #### func (*LkkOS) GetEndian 2272 2273 ```go 2274 func (ko *LkkOS) GetEndian() binary.ByteOrder 2275 ``` 2276 GetEndian 获取系统字节序类型,小端返回binary.LittleEndian,大端返回binary.BigEndian . 2277 2278 #### func (*LkkOS) GetHostByIp 2279 2280 ```go 2281 func (ko *LkkOS) GetHostByIp(ipAddress string) (string, error) 2282 ``` 2283 GetHostByIp 获取指定的IP地址对应的主机名. 2284 2285 #### func (*LkkOS) GetIPs 2286 2287 ```go 2288 func (ko *LkkOS) GetIPs() (ips []string) 2289 ``` 2290 GetIPs 获取本机的IP列表. 2291 2292 #### func (*LkkOS) GetIpByHostname 2293 2294 ```go 2295 func (ko *LkkOS) GetIpByHostname(hostname string) (string, error) 2296 ``` 2297 GetIpByHostname 返回主机名对应的 IPv4地址. 2298 2299 #### func (*LkkOS) GetIpsByDomain 2300 2301 ```go 2302 func (ko *LkkOS) GetIpsByDomain(domain string) ([]string, error) 2303 ``` 2304 GetIpsByHost 获取互联网域名/主机名对应的 IPv4 地址列表. 2305 2306 #### func (*LkkOS) GetMacAddrs 2307 2308 ```go 2309 func (ko *LkkOS) GetMacAddrs() (macAddrs []string) 2310 ``` 2311 GetMacAddrs 获取本机的Mac网卡地址列表. 2312 2313 #### func (*LkkOS) GetPidByPort 2314 2315 ```go 2316 func (ko *LkkOS) GetPidByPort(port int) (pid int) 2317 ``` 2318 GetPidByPort 根据端口号获取监听的进程PID. linux可能要求root权限; darwin依赖lsof; windows依赖netstat. 2319 2320 #### func (*LkkOS) GetProcessExecPath 2321 2322 ```go 2323 func (ko *LkkOS) GetProcessExecPath(pid int) string 2324 ``` 2325 GetProcessExecPath 根据PID获取进程的执行路径. 2326 2327 #### func (*LkkOS) GetSystemInfo 2328 2329 ```go 2330 func (ko *LkkOS) GetSystemInfo() *SystemInfo 2331 ``` 2332 GetSystemInfo 获取系统运行信息. 2333 2334 #### func (*LkkOS) GetTempDir 2335 2336 ```go 2337 func (ko *LkkOS) GetTempDir() string 2338 ``` 2339 GetTempDir 返回用于临时文件的目录. 2340 2341 #### func (*LkkOS) Getcwd 2342 2343 ```go 2344 func (ko *LkkOS) Getcwd() (string, error) 2345 ``` 2346 Getcwd 取得当前工作目录(程序可能在任务中进行多次目录切换). 2347 2348 #### func (*LkkOS) Getenv 2349 2350 ```go 2351 func (ko *LkkOS) Getenv(varname string, defvalue ...string) string 2352 ``` 2353 Getenv 获取一个环境变量的值.defvalue为默认值. 2354 2355 #### func (*LkkOS) GoMemory 2356 2357 ```go 2358 func (ko *LkkOS) GoMemory() uint64 2359 ``` 2360 MemoryGetUsage 获取当前go程序的内存使用,返回字节数. 2361 2362 #### func (*LkkOS) HomeDir 2363 2364 ```go 2365 func (ko *LkkOS) HomeDir() (string, error) 2366 ``` 2367 HomeDir 获取当前用户的主目录. 2368 2369 #### func (*LkkOS) Hostname 2370 2371 ```go 2372 func (ko *LkkOS) Hostname() (string, error) 2373 ``` 2374 Hostname 获取主机名. 2375 2376 #### func (*LkkOS) IsLinux 2377 2378 ```go 2379 func (ko *LkkOS) IsLinux() bool 2380 ``` 2381 IsLinux 当前操作系统是否Linux. 2382 2383 #### func (*LkkOS) IsLittleEndian 2384 2385 ```go 2386 func (ko *LkkOS) IsLittleEndian() bool 2387 ``` 2388 IsLittleEndian 系统字节序类型是否小端存储. 2389 2390 #### func (*LkkOS) IsMac 2391 2392 ```go 2393 func (ko *LkkOS) IsMac() bool 2394 ``` 2395 IsMac 当前操作系统是否Mac OS/X. 2396 2397 #### func (*LkkOS) IsPortOpen 2398 2399 ```go 2400 func (ko *LkkOS) IsPortOpen(host string, port interface{}, protocols ...string) bool 2401 ``` 2402 IsPortOpen 检查主机端口是否开放. host为主机名;port为(整型/字符串)端口号;protocols为协议名称,可选,默认tcp. 2403 2404 #### func (*LkkOS) IsPrivateIp 2405 2406 ```go 2407 func (ko *LkkOS) IsPrivateIp(str string) (bool, error) 2408 ``` 2409 IsPrivateIp 是否私有IP地址(ipv4/ipv6). 2410 2411 #### func (*LkkOS) IsProcessExists 2412 2413 ```go 2414 func (ko *LkkOS) IsProcessExists(pid int) (res bool) 2415 ``` 2416 IsProcessExists 进程是否存在. 2417 2418 #### func (*LkkOS) IsPublicIP 2419 2420 ```go 2421 func (ko *LkkOS) IsPublicIP(str string) (bool, error) 2422 ``` 2423 IsPublicIP 是否公网IPv4. 2424 2425 #### func (*LkkOS) IsWindows 2426 2427 ```go 2428 func (ko *LkkOS) IsWindows() bool 2429 ``` 2430 IsWindows 当前操作系统是否Windows. 2431 2432 #### func (*LkkOS) LocalIP 2433 2434 ```go 2435 func (ko *LkkOS) LocalIP() (string, error) 2436 ``` 2437 LocalIP 获取本机第一个NIC's IP. 2438 2439 #### func (*LkkOS) MemoryUsage 2440 2441 ```go 2442 func (ko *LkkOS) MemoryUsage(virtual bool) (used, free, total uint64) 2443 ``` 2444 MemoryUsage 获取内存使用率,单位字节. 参数 virtual(仅支持linux),是否取虚拟内存. used为已用, free为空闲, 2445 total为总数. 2446 2447 #### func (*LkkOS) OutboundIP 2448 2449 ```go 2450 func (ko *LkkOS) OutboundIP() (string, error) 2451 ``` 2452 OutboundIP 获取本机的出口IP. 2453 2454 #### func (*LkkOS) PrivateCIDR 2455 2456 ```go 2457 func (ko *LkkOS) PrivateCIDR() []*net.IPNet 2458 ``` 2459 PrivateCIDR 获取私有网段的CIDR(无类别域间路由). 2460 2461 #### func (*LkkOS) Pwd 2462 2463 ```go 2464 func (ko *LkkOS) Pwd() string 2465 ``` 2466 Pwd 获取当前程序运行所在的路径,注意和Getwd有所不同. 若当前执行的是链接文件,则会指向真实二进制程序的所在目录. 2467 2468 #### func (*LkkOS) Setenv 2469 2470 ```go 2471 func (ko *LkkOS) Setenv(varname, data string) error 2472 ``` 2473 Setenv 设置一个环境变量的值. 2474 2475 #### func (*LkkOS) System 2476 2477 ```go 2478 func (ko *LkkOS) System(command string) (retInt int, outStr, errStr []byte) 2479 ``` 2480 System 与Exec相同,但会同时打印标准输出和标准错误. 2481 2482 #### func (*LkkOS) TriggerGC 2483 2484 ```go 2485 func (ko *LkkOS) TriggerGC() 2486 ``` 2487 TriggerGC 触发GC(非阻塞). 2488 2489 #### func (*LkkOS) Unsetenv 2490 2491 ```go 2492 func (ko *LkkOS) Unsetenv(varname string) error 2493 ``` 2494 Unsetenv 删除一个环境变量. 2495 2496 #### func (*LkkOS) Uptime 2497 2498 ```go 2499 func (ko *LkkOS) Uptime() (uint64, error) 2500 ``` 2501 Uptime 获取系统运行时间,秒. 2502 2503 #### type LkkPKCSType 2504 2505 ```go 2506 type LkkPKCSType int8 2507 ``` 2508 2509 LkkPKCSType 枚举类型,PKCS填充类型 2510 2511 #### type LkkPadType 2512 2513 ```go 2514 type LkkPadType uint8 2515 ``` 2516 2517 LkkPadType 枚举类型,字符串填充类型 2518 2519 #### type LkkRandString 2520 2521 ```go 2522 type LkkRandString uint8 2523 ``` 2524 2525 LkkRandString 枚举类型,随机字符串类型 2526 2527 #### type LkkString 2528 2529 ```go 2530 type LkkString struct { 2531 } 2532 ``` 2533 2534 LkkString is the receiver of string utilities 2535 2536 #### func (*LkkString) Addslashes 2537 2538 ```go 2539 func (ks *LkkString) Addslashes(str string) string 2540 ``` 2541 Addslashes 使用反斜线引用字符串. 2542 2543 #### func (*LkkString) AtWho 2544 2545 ```go 2546 func (ks *LkkString) AtWho(text string, minLen ...int) []string 2547 ``` 2548 AtWho 查找被@的用户名.minLen为用户名最小长度,默认5. 2549 2550 #### func (*LkkString) Big5ToUtf8 2551 2552 ```go 2553 func (ks *LkkString) Big5ToUtf8(s []byte) ([]byte, error) 2554 ``` 2555 Big5ToUtf8 BIG5转UTF-8编码. 2556 2557 #### func (*LkkString) Br2nl 2558 2559 ```go 2560 func (ks *LkkString) Br2nl(str string) string 2561 ``` 2562 Br2nl 将br标签转换为换行符. 2563 2564 #### func (*LkkString) Chr 2565 2566 ```go 2567 func (ks *LkkString) Chr(chr uint) string 2568 ``` 2569 Chr 返回相对应于 ASCII 所指定的单个字符. 2570 2571 #### func (*LkkString) ChunkSplit 2572 2573 ```go 2574 func (ks *LkkString) ChunkSplit(str string, chunklen uint, end string) string 2575 ``` 2576 ChunkSplit 将字符串分割成小块.str为要分割的字符,chunklen为分割的尺寸,end为行尾序列符号. 2577 2578 #### func (*LkkString) ClearUrlPrefix 2579 2580 ```go 2581 func (ks *LkkString) ClearUrlPrefix(str string, prefix ...string) string 2582 ``` 2583 ClearUrlPrefix 清除URL的前缀; str为URL字符串,prefix为前缀,默认"/". 2584 2585 #### func (*LkkString) ClearUrlSuffix 2586 2587 ```go 2588 func (ks *LkkString) ClearUrlSuffix(str string, suffix ...string) string 2589 ``` 2590 ClearUrlSuffix 清除URL的后缀; str为URL字符串,suffix为后缀,默认"/". 2591 2592 #### func (*LkkString) ClosestWord 2593 2594 ```go 2595 func (ks *LkkString) ClosestWord(word string, searchs []string) (string, int) 2596 ``` 2597 ClosestWord 获取与原字符串相似度最高的字符串,以及它们的编辑距离. word为原字符串,searchs为待查找的字符串数组. 2598 2599 #### func (*LkkString) CountBase64Byte 2600 2601 ```go 2602 func (ks *LkkString) CountBase64Byte(str string) (res int) 2603 ``` 2604 CountBase64Byte 粗略统计base64字符串大小,字节. 2605 2606 #### func (*LkkString) CountWords 2607 2608 ```go 2609 func (ks *LkkString) CountWords(str string) (int, map[string]int) 2610 ``` 2611 CountWords 统计字符串中单词的使用情况. 返回结果:单词总数;和一个字典,包含每个单词的单独统计. 因为没有分词,对中文尚未很好支持. 2612 2613 #### func (*LkkString) Crc32 2614 2615 ```go 2616 func (ks *LkkString) Crc32(str string) uint32 2617 ``` 2618 Crc32 计算一个字符串的 crc32 多项式. 2619 2620 #### func (*LkkString) DBC2SBC 2621 2622 ```go 2623 func (ks *LkkString) DBC2SBC(s string) string 2624 ``` 2625 DBC2SBC 半角转全角. 2626 2627 #### func (*LkkString) DetectEncoding 2628 2629 ```go 2630 func (ks *LkkString) DetectEncoding(str string) (res string) 2631 ``` 2632 DetectEncoding 匹配字符编码,TODO. 2633 2634 #### func (*LkkString) Dstrpos 2635 2636 ```go 2637 func (ks *LkkString) Dstrpos(str string, arr []string, chkCase bool) (bool, string) 2638 ``` 2639 Dstrpos 检查字符串str是否包含数组arr的元素之一,返回检查结果和匹配的字符串. chkCase为是否检查大小写. 2640 2641 #### func (*LkkString) EndsWith 2642 2643 ```go 2644 func (ks *LkkString) EndsWith(str, sub string, ignoreCase bool) bool 2645 ``` 2646 EndsWith 字符串str是否以sub结尾. 2647 2648 #### func (*LkkString) EndsWiths 2649 2650 ```go 2651 func (ks *LkkString) EndsWiths(str string, subs []string, ignoreCase bool) (res bool) 2652 ``` 2653 EndsWiths 字符串str是否以subs其中之一为结尾. 2654 2655 #### func (*LkkString) Explode 2656 2657 ```go 2658 func (ks *LkkString) Explode(str string, delimiters ...string) (res []string) 2659 ``` 2660 Explode 字符串分割.delimiters为分隔符,可选,支持多个. 2661 2662 #### func (*LkkString) FirstLetter 2663 2664 ```go 2665 func (ks *LkkString) FirstLetter(str string) string 2666 ``` 2667 FirstLetter 获取字符串首字母. 2668 2669 #### func (*LkkString) FormatUrl 2670 2671 ```go 2672 func (ks *LkkString) FormatUrl(str string) string 2673 ``` 2674 FormatUrl 格式化URL. 2675 2676 #### func (*LkkString) GbkToUtf8 2677 2678 ```go 2679 func (ks *LkkString) GbkToUtf8(s []byte) ([]byte, error) 2680 ``` 2681 GbkToUtf8 GBK转UTF-8编码. 2682 2683 #### func (*LkkString) GetDomain 2684 2685 ```go 2686 func (ks *LkkString) GetDomain(str string, isMain ...bool) string 2687 ``` 2688 GetDomain 从URL字符串中获取域名. 2689 可选参数isMain,默认为false,取完整域名;为true时,取主域名(如abc.test.com取test.com). 2690 2691 #### func (*LkkString) GetEquationValue 2692 2693 ```go 2694 func (ks *LkkString) GetEquationValue(str, name string) (res string) 2695 ``` 2696 GetEquationValue 获取等式str中变量name的值. 2697 2698 #### func (*LkkString) Gravatar 2699 2700 ```go 2701 func (ks *LkkString) Gravatar(email string, size uint16) string 2702 ``` 2703 Gravatar 获取Gravatar头像地址. email为邮箱;size为头像尺寸像素. 2704 2705 #### func (*LkkString) HasChinese 2706 2707 ```go 2708 func (ks *LkkString) HasChinese(str string) bool 2709 ``` 2710 HasChinese 字符串是否含有中文. 2711 2712 #### func (*LkkString) HasEmoji 2713 2714 ```go 2715 func (ks *LkkString) HasEmoji(str string) bool 2716 ``` 2717 HasEmoji 字符串是否含有表情符. 2718 2719 #### func (*LkkString) HasEnglish 2720 2721 ```go 2722 func (ks *LkkString) HasEnglish(str string) bool 2723 ``` 2724 HasEnglish 是否含有英文字符,HasLetter的别名. 2725 2726 #### func (*LkkString) HasFullWidth 2727 2728 ```go 2729 func (ks *LkkString) HasFullWidth(str string) bool 2730 ``` 2731 HasFullWidth 是否含有全角字符. 2732 2733 #### func (*LkkString) HasHalfWidth 2734 2735 ```go 2736 func (ks *LkkString) HasHalfWidth(str string) bool 2737 ``` 2738 HasHalfWidth 是否含有半角字符. 2739 2740 #### func (*LkkString) HasLetter 2741 2742 ```go 2743 func (ks *LkkString) HasLetter(str string) bool 2744 ``` 2745 HasLetter 字符串是否含有(英文)字母. 2746 2747 #### func (*LkkString) HasSpecialChar 2748 2749 ```go 2750 func (ks *LkkString) HasSpecialChar(str string) bool 2751 ``` 2752 HasSpecialChar 字符串是否含有特殊字符. 2753 2754 #### func (*LkkString) HasWhitespace 2755 2756 ```go 2757 func (ks *LkkString) HasWhitespace(str string) bool 2758 ``` 2759 HasWhitespace 是否带有空白字符. 2760 2761 #### func (*LkkString) HideCard 2762 2763 ```go 2764 func (ks *LkkString) HideCard(card string) string 2765 ``` 2766 HideCard 隐藏证件号码. 2767 2768 #### func (*LkkString) HideMobile 2769 2770 ```go 2771 func (ks *LkkString) HideMobile(mobile string) string 2772 ``` 2773 HideMobile 隐藏手机号. 2774 2775 #### func (*LkkString) HideTrueName 2776 2777 ```go 2778 func (ks *LkkString) HideTrueName(name string) string 2779 ``` 2780 HideTrueName 隐藏真实名称(如姓名、账号、公司等). 2781 2782 #### func (*LkkString) Html2Text 2783 2784 ```go 2785 func (ks *LkkString) Html2Text(str string) string 2786 ``` 2787 Html2Text 将html转换为纯文本. 2788 2789 #### func (*LkkString) Htmlentities 2790 2791 ```go 2792 func (ks *LkkString) Htmlentities(str string) string 2793 ``` 2794 Htmlentities 将字符转换为 HTML 转义字符. 2795 2796 #### func (*LkkString) HtmlentityDecode 2797 2798 ```go 2799 func (ks *LkkString) HtmlentityDecode(str string) string 2800 ``` 2801 HtmlentityDecode 将HTML实体转换为它们对应的字符. 2802 2803 #### func (*LkkString) HttpBuildQuery 2804 2805 ```go 2806 func (ks *LkkString) HttpBuildQuery(queryData url.Values) string 2807 ``` 2808 HttpBuildQuery 根据参数生成 URL-encode 之后的请求字符串. 2809 2810 #### func (*LkkString) Img2Base64 2811 2812 ```go 2813 func (ks *LkkString) Img2Base64(content []byte, ext ...string) string 2814 ``` 2815 Img2Base64 将图片字节转换为base64字符串.ext为图片扩展名,默认jpg. 2816 2817 #### func (*LkkString) Index 2818 2819 ```go 2820 func (ks *LkkString) Index(str, sub string, ignoreCase bool) int 2821 ``` 2822 Index 查找子串sub在字符串str中第一次出现的位置,不存在则返回-1; ignoreCase为是否忽略大小写. 2823 2824 #### func (*LkkString) IsASCII 2825 2826 ```go 2827 func (ks *LkkString) IsASCII(str string) bool 2828 ``` 2829 IsASCII 是否ASCII字符串. 2830 2831 #### func (*LkkString) IsAlphaNumeric 2832 2833 ```go 2834 func (ks *LkkString) IsAlphaNumeric(str string) bool 2835 ``` 2836 IsAlphaNumeric 是否字母或数字. 2837 2838 #### func (*LkkString) IsBase64 2839 2840 ```go 2841 func (ks *LkkString) IsBase64(str string) bool 2842 ``` 2843 IsBase64 是否base64字符串. 2844 2845 #### func (*LkkString) IsBase64Image 2846 2847 ```go 2848 func (ks *LkkString) IsBase64Image(str string) bool 2849 ``` 2850 IsBase64Image 是否base64编码的图片. 2851 2852 #### func (*LkkString) IsBlank 2853 2854 ```go 2855 func (ks *LkkString) IsBlank(str string) bool 2856 ``` 2857 IsBlank 是否空(空白)字符串. 2858 2859 #### func (*LkkString) IsChinese 2860 2861 ```go 2862 func (ks *LkkString) IsChinese(str string) bool 2863 ``` 2864 IsChinese 字符串是否全部中文. 2865 2866 #### func (*LkkString) IsChineseName 2867 2868 ```go 2869 func (ks *LkkString) IsChineseName(str string) bool 2870 ``` 2871 IsChineseName 字符串是否中文名称. 2872 2873 #### func (*LkkString) IsCreditNo 2874 2875 ```go 2876 func (ks *LkkString) IsCreditNo(str string) (bool, string) 2877 ``` 2878 IsCreditNo 检查是否(15或18位)身份证号码,并返回经校验的号码. 2879 2880 #### func (*LkkString) IsDNSName 2881 2882 ```go 2883 func (ks *LkkString) IsDNSName(str string) bool 2884 ``` 2885 IsDNSName 是否DNS名称. 2886 2887 #### func (*LkkString) IsDialAddr 2888 2889 ```go 2890 func (ks *LkkString) IsDialAddr(str string) bool 2891 ``` 2892 IsDialAddr 是否网络拨号地址(形如127.0.0.1:80),用于net.Dial()检查. 2893 2894 #### func (*LkkString) IsEmail 2895 2896 ```go 2897 func (ks *LkkString) IsEmail(email string, validateHost bool) (bool, error) 2898 ``` 2899 IsEmail 检查字符串是否邮箱.参数validateTrue,是否验证邮箱主机的真实性. 2900 2901 #### func (*LkkString) IsEmpty 2902 2903 ```go 2904 func (ks *LkkString) IsEmpty(str string) bool 2905 ``` 2906 IsEmpty 字符串是否为空(包括空格). 2907 2908 #### func (*LkkString) IsEnglish 2909 2910 ```go 2911 func (ks *LkkString) IsEnglish(str string, letterCase LkkCaseSwitch) bool 2912 ``` 2913 IsEnglish 字符串是否纯英文.letterCase是否检查大小写,枚举值(CASE_NONE,CASE_LOWER,CASE_UPPER). 2914 2915 #### func (*LkkString) IsGbk 2916 2917 ```go 2918 func (ks *LkkString) IsGbk(s []byte) (res bool) 2919 ``` 2920 IsGbk 字符串是否GBK编码. 2921 2922 #### func (*LkkString) IsHexcolor 2923 2924 ```go 2925 func (ks *LkkString) IsHexcolor(str string) (bool, string) 2926 ``` 2927 IsHexcolor 检查是否十六进制颜色,并返回带"#"的修正值. 2928 2929 #### func (*LkkString) IsHost 2930 2931 ```go 2932 func (ks *LkkString) IsHost(str string) bool 2933 ``` 2934 IsHost 字符串是否主机名(IP或DNS名称). 2935 2936 #### func (*LkkString) IsIP 2937 2938 ```go 2939 func (ks *LkkString) IsIP(str string) bool 2940 ``` 2941 IsIP 检查字符串是否IP地址. 2942 2943 #### func (*LkkString) IsIPv4 2944 2945 ```go 2946 func (ks *LkkString) IsIPv4(str string) bool 2947 ``` 2948 IsIPv4 检查字符串是否IPv4地址. 2949 2950 #### func (*LkkString) IsIPv6 2951 2952 ```go 2953 func (ks *LkkString) IsIPv6(str string) bool 2954 ``` 2955 IsIPv6 检查字符串是否IPv6地址. 2956 2957 #### func (*LkkString) IsJSON 2958 2959 ```go 2960 func (ks *LkkString) IsJSON(str string) bool 2961 ``` 2962 IsJSON 字符串是否合法的json格式. 2963 2964 #### func (*LkkString) IsLetters 2965 2966 ```go 2967 func (ks *LkkString) IsLetters(str string) bool 2968 ``` 2969 IsLetters 字符串是否全(英文)字母组成. 2970 2971 #### func (*LkkString) IsLower 2972 2973 ```go 2974 func (ks *LkkString) IsLower(str string) bool 2975 ``` 2976 IsLower 字符串是否全部小写. 2977 2978 #### func (*LkkString) IsMACAddr 2979 2980 ```go 2981 func (ks *LkkString) IsMACAddr(str string) bool 2982 ``` 2983 IsMACAddr 是否MAC物理网卡地址. 2984 2985 #### func (*LkkString) IsMd5 2986 2987 ```go 2988 func (ks *LkkString) IsMd5(str string) bool 2989 ``` 2990 IsMd5 是否md5值. 2991 2992 #### func (*LkkString) IsMobilecn 2993 2994 ```go 2995 func (ks *LkkString) IsMobilecn(str string) bool 2996 ``` 2997 IsMobilecn 检查字符串是否中国大陆手机号. 2998 2999 #### func (*LkkString) IsMultibyte 3000 3001 ```go 3002 func (ks *LkkString) IsMultibyte(str string) bool 3003 ``` 3004 IsMultibyte 字符串是否含有多字节字符. 3005 3006 #### func (*LkkString) IsNumeric 3007 3008 ```go 3009 func (ks *LkkString) IsNumeric(str string) bool 3010 ``` 3011 IsNumeric 字符串是否数值(不包含复数和科学计数法). 3012 3013 #### func (*LkkString) IsPhone 3014 3015 ```go 3016 func (ks *LkkString) IsPhone(str string) bool 3017 ``` 3018 IsPhone 是否电话号码(手机或固话). 3019 3020 #### func (*LkkString) IsRGBcolor 3021 3022 ```go 3023 func (ks *LkkString) IsRGBcolor(str string) bool 3024 ``` 3025 IsRGBcolor 检查字符串是否RGB颜色格式. 3026 3027 #### func (*LkkString) IsRsaPublicKey 3028 3029 ```go 3030 func (ks *LkkString) IsRsaPublicKey(str string, keylen uint16) bool 3031 ``` 3032 IsRsaPublicKey 检查字符串是否RSA的公钥,keylen为密钥长度. 3033 3034 #### func (*LkkString) IsSha1 3035 3036 ```go 3037 func (ks *LkkString) IsSha1(str string) bool 3038 ``` 3039 IsSha1 是否Sha1值. 3040 3041 #### func (*LkkString) IsSha256 3042 3043 ```go 3044 func (ks *LkkString) IsSha256(str string) bool 3045 ``` 3046 IsSha256 是否Sha256值. 3047 3048 #### func (*LkkString) IsSha512 3049 3050 ```go 3051 func (ks *LkkString) IsSha512(str string) bool 3052 ``` 3053 IsSha512 是否Sha512值. 3054 3055 #### func (*LkkString) IsTel 3056 3057 ```go 3058 func (ks *LkkString) IsTel(str string) bool 3059 ``` 3060 IsTel 是否固定电话或400/800电话. 3061 3062 #### func (*LkkString) IsUpper 3063 3064 ```go 3065 func (ks *LkkString) IsUpper(str string) bool 3066 ``` 3067 IsUpper 字符串是否全部大写. 3068 3069 #### func (*LkkString) IsUrl 3070 3071 ```go 3072 func (ks *LkkString) IsUrl(str string) bool 3073 ``` 3074 IsUrl 检查字符串是否URL. 3075 3076 #### func (*LkkString) IsUrlExists 3077 3078 ```go 3079 func (ks *LkkString) IsUrlExists(str string) bool 3080 ``` 3081 IsUrlExists 检查URL是否存在. 3082 3083 #### func (*LkkString) IsUtf8 3084 3085 ```go 3086 func (ks *LkkString) IsUtf8(s []byte) bool 3087 ``` 3088 IsUtf8 字符串是否UTF-8编码. 3089 3090 #### func (*LkkString) IsWhitespaces 3091 3092 ```go 3093 func (ks *LkkString) IsWhitespaces(str string) bool 3094 ``` 3095 IsWhitespaces 是否全部空白字符,不包括空字符串. 3096 3097 #### func (*LkkString) IsWord 3098 3099 ```go 3100 func (ks *LkkString) IsWord(str string) bool 3101 ``` 3102 IsWord 是否词语(不以下划线开头的中文、英文、数字、下划线). 3103 3104 #### func (*LkkString) JsonDecode 3105 3106 ```go 3107 func (ks *LkkString) JsonDecode(str []byte, res interface{}) error 3108 ``` 3109 JsonDecode 对 JSON 格式的str字符串进行解码,注意res使用指针. 依赖库github.com/json-iterator/go. 3110 3111 #### func (*LkkString) JsonEncode 3112 3113 ```go 3114 func (ks *LkkString) JsonEncode(val interface{}) ([]byte, error) 3115 ``` 3116 JsonEncode 对val变量进行 JSON 编码. 依赖库github.com/json-iterator/go. 3117 3118 #### func (*LkkString) Jsonp2Json 3119 3120 ```go 3121 func (ks *LkkString) Jsonp2Json(str string) (string, error) 3122 ``` 3123 Jsonp2Json 将jsonp转为json串. Example: forbar({a:"1",b:2}) to {"a":"1","b":2} 3124 3125 #### func (*LkkString) LastIndex 3126 3127 ```go 3128 func (ks *LkkString) LastIndex(str, sub string, ignoreCase bool) int 3129 ``` 3130 LastIndex 查找子串sub在字符串str中最后一次出现的位置,不存在则返回-1; ignoreCase为是否忽略大小写. 3131 3132 #### func (*LkkString) Lcfirst 3133 3134 ```go 3135 func (ks *LkkString) Lcfirst(str string) string 3136 ``` 3137 Lcfirst 将字符串的第一个字符转换为小写. 3138 3139 #### func (*LkkString) Lcwords 3140 3141 ```go 3142 func (ks *LkkString) Lcwords(str string) string 3143 ``` 3144 Lcwords 将字符串中每个词的首字母转换为小写. 3145 3146 #### func (*LkkString) Levenshtein 3147 3148 ```go 3149 func (ks *LkkString) Levenshtein(a, b string) int 3150 ``` 3151 Levenshtein 计算两个字符串之间的编辑距离,返回值越小字符串越相似. 注意字符串最大长度为255. 3152 3153 #### func (*LkkString) Ltrim 3154 3155 ```go 3156 func (ks *LkkString) Ltrim(str string, characterMask ...string) string 3157 ``` 3158 Ltrim 删除字符串开头的空白字符(或其他字符). characterMask为要修剪的字符. 3159 3160 #### func (*LkkString) MatchEquations 3161 3162 ```go 3163 func (ks *LkkString) MatchEquations(str string) (res []string) 3164 ``` 3165 MatchEquations 匹配字符串中所有的等式. 3166 3167 #### func (*LkkString) MbStrlen 3168 3169 ```go 3170 func (ks *LkkString) MbStrlen(str string) int 3171 ``` 3172 MbStrlen 获取宽字符串的长度,多字节的字符被计为 1. 3173 3174 #### func (*LkkString) MbSubstr 3175 3176 ```go 3177 func (ks *LkkString) MbSubstr(str string, start int, length ...int) string 3178 ``` 3179 MbSubstr 返回(宽字符)字符串str的子串. start 为起始位置.若值是负数,返回的结果将从 str 结尾处向前数第 abs(start) 3180 个字符开始. length 为截取的长度.若值时负数, str 末尾处的 abs(length) 个字符将会被省略. 3181 start/length的绝对值必须<=原字符串长度. 3182 3183 #### func (*LkkString) Md5 3184 3185 ```go 3186 func (ks *LkkString) Md5(str string, length ...uint8) string 3187 ``` 3188 Md5 获取字符串md5值. length指定结果长度,默认32. 3189 3190 #### func (*LkkString) Md5Byte 3191 3192 ```go 3193 func (ks *LkkString) Md5Byte(str []byte, length ...uint8) []byte 3194 ``` 3195 Md5 获取字节切片md5值. length指定结果长度,默认32. 3196 3197 #### func (*LkkString) Nl2br 3198 3199 ```go 3200 func (ks *LkkString) Nl2br(str string) string 3201 ``` 3202 Nl2br 将换行符转换为br标签. 3203 3204 #### func (*LkkString) Ord 3205 3206 ```go 3207 func (ks *LkkString) Ord(char string) rune 3208 ``` 3209 Ord 将首字符转换为rune(ASCII值). 注意:当字符串为空时返回65533. 3210 3211 #### func (*LkkString) ParseStr 3212 3213 ```go 3214 func (ks *LkkString) ParseStr(encodedString string, result map[string]interface{}) error 3215 ``` 3216 ParseStr 将URI查询字符串转换为字典. 3217 3218 #### func (*LkkString) ParseUrl 3219 3220 ```go 3221 func (ks *LkkString) ParseUrl(str string, component int16) (map[string]string, error) 3222 ``` 3223 ParseUrl 解析URL,返回其组成部分. component为需要返回的组成; -1: all; 1: scheme; 2: host; 4: port; 3224 8: user; 16: pass; 32: path; 64: query; 128: fragment . 3225 3226 #### func (*LkkString) Quotemeta 3227 3228 ```go 3229 func (ks *LkkString) Quotemeta(str string) string 3230 ``` 3231 Quotemeta 转义元字符集,包括 . \ + * ? [ ^ ] ( $ )等. 3232 3233 #### func (*LkkString) Random 3234 3235 ```go 3236 func (ks *LkkString) Random(length uint8, rtype LkkRandString) string 3237 ``` 3238 Random 生成随机字符串. length为长度,rtype为枚举: RAND_STRING_ALPHA 字母; RAND_STRING_NUMERIC 3239 数值; RAND_STRING_ALPHANUM 字母+数值; RAND_STRING_SPECIAL 字母+数值+特殊字符; 3240 RAND_STRING_CHINESE 仅中文. 3241 3242 #### func (*LkkString) RawUrlDecode 3243 3244 ```go 3245 func (ks *LkkString) RawUrlDecode(str string) (string, error) 3246 ``` 3247 RawUrlDecode 对已编码的 URL 字符串进行解码. 3248 3249 #### func (*LkkString) RawUrlEncode 3250 3251 ```go 3252 func (ks *LkkString) RawUrlEncode(str string) string 3253 ``` 3254 RawUrlEncode 按照 RFC 3986 对 URL 进行编码. 3255 3256 #### func (*LkkString) RemoveAfter 3257 3258 ```go 3259 func (ks *LkkString) RemoveAfter(str, after string, include, ignoreCase bool) string 3260 ``` 3261 RemoveAfter 移除after之后的字符串; include为是否移除包括after本身; ignoreCase为是否忽略大小写. 3262 3263 #### func (*LkkString) RemoveBefore 3264 3265 ```go 3266 func (ks *LkkString) RemoveBefore(str, before string, include, ignoreCase bool) string 3267 ``` 3268 RemoveBefore 移除before之前的字符串; include为是否移除包括before本身; ignoreCase为是否忽略大小写. 3269 3270 #### func (*LkkString) RemoveEmoji 3271 3272 ```go 3273 func (ks *LkkString) RemoveEmoji(str string) string 3274 ``` 3275 RemoveEmoji 移除字符串中的表情符(使用正则,效率较低). 3276 3277 #### func (*LkkString) RemoveSpace 3278 3279 ```go 3280 func (ks *LkkString) RemoveSpace(str string, all bool) string 3281 ``` 3282 RemoveSpace 移除字符串中的空白字符. all为true时移除全部空白,为false时只替换连续的空白字符为一个空格. 3283 3284 #### func (*LkkString) Reverse 3285 3286 ```go 3287 func (ks *LkkString) Reverse(str string) string 3288 ``` 3289 Reverse 反转字符串. 3290 3291 #### func (*LkkString) Rtrim 3292 3293 ```go 3294 func (ks *LkkString) Rtrim(str string, characterMask ...string) string 3295 ``` 3296 Rtrim 删除字符串末端的空白字符(或者其他字符). characterMask为要修剪的字符. 3297 3298 #### func (*LkkString) SBC2DBC 3299 3300 ```go 3301 func (ks *LkkString) SBC2DBC(s string) string 3302 ``` 3303 SBC2DBC 全角转半角. 3304 3305 #### func (*LkkString) Serialize 3306 3307 ```go 3308 func (ks *LkkString) Serialize(val interface{}) ([]byte, error) 3309 ``` 3310 Serialize 对变量进行序列化. 3311 3312 #### func (*LkkString) ShaX 3313 3314 ```go 3315 func (ks *LkkString) ShaX(str string, x uint16) string 3316 ``` 3317 ShaX 计算字符串的 shaX 散列值,x为1/256/512 . 3318 3319 #### func (*LkkString) ShaXByte 3320 3321 ```go 3322 func (ks *LkkString) ShaXByte(str []byte, x uint16) []byte 3323 ``` 3324 ShaXByte 计算字节切片的 shaX 散列值,x为1/256/512 . 3325 3326 #### func (*LkkString) Shuffle 3327 3328 ```go 3329 func (ks *LkkString) Shuffle(str string) string 3330 ``` 3331 Shuffle 随机打乱字符串. 3332 3333 #### func (*LkkString) SimilarText 3334 3335 ```go 3336 func (ks *LkkString) SimilarText(first, second string) (res int, percent float64) 3337 ``` 3338 SimilarText 计算两个字符串的相似度;返回在两个字符串中匹配字符的数目,以及相似程度百分数. 3339 3340 #### func (*LkkString) StartsWith 3341 3342 ```go 3343 func (ks *LkkString) StartsWith(str, sub string, ignoreCase bool) bool 3344 ``` 3345 StartsWith 字符串str是否以sub开头. 3346 3347 #### func (*LkkString) StartsWiths 3348 3349 ```go 3350 func (ks *LkkString) StartsWiths(str string, subs []string, ignoreCase bool) (res bool) 3351 ``` 3352 StartsWiths 字符串str是否以subs其中之一为开头. 3353 3354 #### func (*LkkString) StripTags 3355 3356 ```go 3357 func (ks *LkkString) StripTags(str string) string 3358 ``` 3359 StripTags 过滤html标签. 3360 3361 #### func (*LkkString) Stripos 3362 3363 ```go 3364 func (ks *LkkString) Stripos(haystack, needle string, offset int) int 3365 ``` 3366 Stripos 查找字符串首次出现的位置(不区分大小写),找不到时返回-1. haystack在该字符串中进行查找,needle要查找的字符串; 3367 offset起始位置,为负数时时,搜索会从字符串结尾指定字符数开始. 3368 3369 #### func (*LkkString) Stripslashes 3370 3371 ```go 3372 func (ks *LkkString) Stripslashes(str string) string 3373 ``` 3374 Stripslashes 反引用一个引用字符串. 3375 3376 #### func (*LkkString) Strlen 3377 3378 ```go 3379 func (ks *LkkString) Strlen(str string) int 3380 ``` 3381 Strlen 获取字符串长度. 3382 3383 #### func (*LkkString) Strpad 3384 3385 ```go 3386 func (ks *LkkString) Strpad(str string, fill string, max int, ptype LkkPadType) string 3387 ``` 3388 Strpad 使用fill填充str字符串到指定长度max. ptype为填充类型,枚举值(PAD_LEFT,PAD_RIGHT,PAD_BOTH). 3389 3390 #### func (*LkkString) StrpadBoth 3391 3392 ```go 3393 func (ks *LkkString) StrpadBoth(str string, fill string, max int) string 3394 ``` 3395 StrpadBoth 字符串两侧填充,请参考Strpad. 3396 3397 #### func (*LkkString) StrpadLeft 3398 3399 ```go 3400 func (ks *LkkString) StrpadLeft(str string, fill string, max int) string 3401 ``` 3402 StrpadLeft 字符串左侧填充,请参考Strpad. 3403 3404 #### func (*LkkString) StrpadRight 3405 3406 ```go 3407 func (ks *LkkString) StrpadRight(str string, fill string, max int) string 3408 ``` 3409 StrpadRight 字符串右侧填充,请参考Strpad. 3410 3411 #### func (*LkkString) Strpos 3412 3413 ```go 3414 func (ks *LkkString) Strpos(haystack, needle string, offset int) int 3415 ``` 3416 Strpos 查找字符串首次出现的位置,找不到时返回-1. haystack在该字符串中进行查找,needle要查找的字符串; 3417 offset起始位置,为负数时时,搜索会从字符串结尾指定字符数开始. 3418 3419 #### func (*LkkString) Strripos 3420 3421 ```go 3422 func (ks *LkkString) Strripos(haystack, needle string, offset int) int 3423 ``` 3424 Strripos 查找指定字符串在目标字符串中最后一次出现的位置(不区分大小写). 3425 3426 #### func (*LkkString) Strrpos 3427 3428 ```go 3429 func (ks *LkkString) Strrpos(haystack, needle string, offset int) int 3430 ``` 3431 Strrpos 查找指定字符串在目标字符串中最后一次出现的位置. 3432 3433 #### func (*LkkString) Substr 3434 3435 ```go 3436 func (ks *LkkString) Substr(str string, start int, length ...int) string 3437 ``` 3438 Substr 截取字符串str的子串. start 为起始位置.若值是负数,返回的结果将从 str 结尾处向前数第 abs(start) 个字符开始. 3439 length 为截取的长度.若值时负数, str 末尾处的 abs(length) 个字符将会被省略. start/length的绝对值必须<=原字符串长度. 3440 3441 #### func (*LkkString) SubstrCount 3442 3443 ```go 3444 func (ks *LkkString) SubstrCount(str, substr string) int 3445 ``` 3446 SubstrCount 计算子串substr在字符串str中出现的次数,区分大小写. 3447 3448 #### func (*LkkString) SubstriCount 3449 3450 ```go 3451 func (ks *LkkString) SubstriCount(str, substr string) int 3452 ``` 3453 SubstriCount 计算子串substr在字符串str中出现的次数,忽略大小写. 3454 3455 #### func (*LkkString) ToCamelCase 3456 3457 ```go 3458 func (ks *LkkString) ToCamelCase(str string) string 3459 ``` 3460 ToCamelCase 转为驼峰写法. 去掉包括下划线"_"和横杠"-". 3461 3462 #### func (*LkkString) ToKebabCase 3463 3464 ```go 3465 func (ks *LkkString) ToKebabCase(str string) string 3466 ``` 3467 ToSnakeCase 转为串形写法. 使用横杠"-"连接. 3468 3469 #### func (*LkkString) ToSnakeCase 3470 3471 ```go 3472 func (ks *LkkString) ToSnakeCase(str string) string 3473 ``` 3474 ToSnakeCase 转为蛇形写法. 使用下划线"_"连接. 3475 3476 #### func (*LkkString) Trim 3477 3478 ```go 3479 func (ks *LkkString) Trim(str string, characterMask ...string) string 3480 ``` 3481 Trim 去除字符串首尾处的空白字符(或者其他字符). characterMask为要修剪的字符. 3482 3483 #### func (*LkkString) TrimBOM 3484 3485 ```go 3486 func (ks *LkkString) TrimBOM(str []byte) []byte 3487 ``` 3488 TrimBOM 移除字符串中的BOM 3489 3490 #### func (*LkkString) Ucfirst 3491 3492 ```go 3493 func (ks *LkkString) Ucfirst(str string) string 3494 ``` 3495 Ucfirst 将字符串的第一个字符转换为大写. 3496 3497 #### func (*LkkString) Ucwords 3498 3499 ```go 3500 func (ks *LkkString) Ucwords(str string) string 3501 ``` 3502 Ucwords 将字符串中每个词的首字母转换为大写. 3503 3504 #### func (*LkkString) UnSerialize 3505 3506 ```go 3507 func (ks *LkkString) UnSerialize(data []byte, register ...interface{}) (val interface{}, err error) 3508 ``` 3509 UnSerialize 对字符串进行反序列化. 其中register注册对象,其类型必须和Serialize的一致. 3510 3511 #### func (*LkkString) Uniqid 3512 3513 ```go 3514 func (ks *LkkString) Uniqid(prefix string) string 3515 ``` 3516 Uniqid 获取一个带前缀的唯一ID(24位). prefix 为前缀字符串. 3517 3518 #### func (*LkkString) UrlDecode 3519 3520 ```go 3521 func (ks *LkkString) UrlDecode(str string) (string, error) 3522 ``` 3523 UrlDecode 解码已编码的 URL 字符串. 3524 3525 #### func (*LkkString) UrlEncode 3526 3527 ```go 3528 func (ks *LkkString) UrlEncode(str string) string 3529 ``` 3530 UrlEncode 编码 URL 字符串. 3531 3532 #### func (*LkkString) Utf8ToBig5 3533 3534 ```go 3535 func (ks *LkkString) Utf8ToBig5(s []byte) ([]byte, error) 3536 ``` 3537 Utf8ToBig5 UTF-8转BIG5编码. 3538 3539 #### func (*LkkString) Utf8ToGbk 3540 3541 ```go 3542 func (ks *LkkString) Utf8ToGbk(s []byte) ([]byte, error) 3543 ``` 3544 Utf8ToGbk UTF-8转GBK编码. 3545 3546 #### func (*LkkString) UuidV4 3547 3548 ```go 3549 func (ks *LkkString) UuidV4() (string, error) 3550 ``` 3551 UuidV4 获取36位UUID(Version4). 3552 3553 #### func (*LkkString) VersionCompare 3554 3555 ```go 3556 func (ks *LkkString) VersionCompare(version1, version2, operator string) (bool, error) 3557 ``` 3558 VersionCompare 对比两个版本号字符串. operator允许的操作符有: <, lt, <=, le, >, gt, >=, ge, ==, =, 3559 eq, !=, <>, ne . 特定的版本字符串,将会用以下顺序处理: 无 < dev < alpha = a < beta = b < RC = rc < 3560 # < pl = p < ga < release = r 用法: VersionCompare("1.2.3-alpha", "1.2.3RC7", 3561 '>=') ; VersionCompare("1.2.3-beta", "1.2.3pl", 'lt') ; 3562 VersionCompare("1.1_dev", "1.2any", 'eq') . 3563 3564 #### type LkkTime 3565 3566 ```go 3567 type LkkTime struct { 3568 } 3569 ``` 3570 3571 LkkTime is the receiver of time utilities 3572 3573 #### func (*LkkTime) CheckDate 3574 3575 ```go 3576 func (kt *LkkTime) CheckDate(year, month, day int) bool 3577 ``` 3578 CheckDate 检查是否正常的日期. 3579 3580 #### func (*LkkTime) Date 3581 3582 ```go 3583 func (kt *LkkTime) Date(format string, ts ...interface{}) string 3584 ``` 3585 Date 格式化时间. format 格式,如"Y-m-d H:i:s". ts为int/int64类型时间戳或time.Time类型. 3586 3587 #### func (*LkkTime) Day 3588 3589 ```go 3590 func (kt *LkkTime) Day(t ...time.Time) int 3591 ``` 3592 Day 获取日份. 3593 3594 #### func (*LkkTime) DaysBetween 3595 3596 ```go 3597 func (kt *LkkTime) DaysBetween(fromDate, toDate time.Time) int 3598 ``` 3599 DaysBetween 获取两个日期的间隔天数. fromDate 为开始时间,toDate 为终点时间. 3600 3601 #### func (*LkkTime) EndOfDay 3602 3603 ```go 3604 func (kt *LkkTime) EndOfDay(date time.Time) time.Time 3605 ``` 3606 EndOfDay 获取日期中当天的结束时间. 3607 3608 #### func (*LkkTime) EndOfMonth 3609 3610 ```go 3611 func (kt *LkkTime) EndOfMonth(date time.Time) time.Time 3612 ``` 3613 EndOfMonth 获取日期中当月的结束时间. 3614 3615 #### func (*LkkTime) EndOfWeek 3616 3617 ```go 3618 func (kt *LkkTime) EndOfWeek(date time.Time, weekStartDay ...time.Weekday) time.Time 3619 ``` 3620 EndOfWeek 获取日期中当周的结束时间; weekStartDay 周几作为周的第一天,本库默认周一. 3621 3622 #### func (*LkkTime) EndOfYear 3623 3624 ```go 3625 func (kt *LkkTime) EndOfYear(date time.Time) time.Time 3626 ``` 3627 EndOfYear 获取日期中当年的结束时间. 3628 3629 #### func (*LkkTime) GetMonthDays 3630 3631 ```go 3632 func (kt *LkkTime) GetMonthDays(month int, year ...int) (days int) 3633 ``` 3634 GetMonthDays 获取指定月份的天数.year年份,可选,默认当前年份. 3635 3636 #### func (*LkkTime) Hour 3637 3638 ```go 3639 func (kt *LkkTime) Hour(t ...time.Time) int 3640 ``` 3641 Hour 获取小时. 3642 3643 #### func (*LkkTime) IsDate2time 3644 3645 ```go 3646 func (kt *LkkTime) IsDate2time(str string) (bool, int64) 3647 ``` 3648 IsDate2time 检查字符串是否日期格式,并转换为时间戳.注意,时间戳可能为负数(小于1970年时). 匹配如: 3649 3650 0000 3651 0000-00 3652 0000/00 3653 0000-00-00 3654 0000/00/00 3655 0000-00-00 00 3656 0000/00/00 00 3657 0000-00-00 00:00 3658 0000/00/00 00:00 3659 0000-00-00 00:00:00 3660 0000/00/00 00:00:00 3661 3662 等日期格式. 3663 3664 #### func (*LkkTime) MicroTime 3665 3666 ```go 3667 func (kt *LkkTime) MicroTime() int64 3668 ``` 3669 MicroTime 获取当前Unix时间戳(微秒,16位). 3670 3671 #### func (*LkkTime) MilliTime 3672 3673 ```go 3674 func (kt *LkkTime) MilliTime() int64 3675 ``` 3676 MilliTime 获取当前Unix时间戳(毫秒,13位). 3677 3678 #### func (*LkkTime) Minute 3679 3680 ```go 3681 func (kt *LkkTime) Minute(t ...time.Time) int 3682 ``` 3683 Minute 获取分钟. 3684 3685 #### func (*LkkTime) Month 3686 3687 ```go 3688 func (kt *LkkTime) Month(t ...time.Time) int 3689 ``` 3690 Month 获取月份. 3691 3692 #### func (*LkkTime) Second 3693 3694 ```go 3695 func (kt *LkkTime) Second(t ...time.Time) int 3696 ``` 3697 Second 获取秒数. 3698 3699 #### func (*LkkTime) ServiceStartime 3700 3701 ```go 3702 func (kt *LkkTime) ServiceStartime() int64 3703 ``` 3704 ServiceStartime 获取当前服务启动时间戳,秒. 3705 3706 #### func (*LkkTime) ServiceUptime 3707 3708 ```go 3709 func (kt *LkkTime) ServiceUptime() time.Duration 3710 ``` 3711 ServiceUptime 获取当前服务运行时间,纳秒int64. 3712 3713 #### func (*LkkTime) Sleep 3714 3715 ```go 3716 func (kt *LkkTime) Sleep(t int64) 3717 ``` 3718 Sleep 延缓执行,秒. 3719 3720 #### func (*LkkTime) StartOfDay 3721 3722 ```go 3723 func (kt *LkkTime) StartOfDay(date time.Time) time.Time 3724 ``` 3725 StartOfDay 获取日期中当天的开始时间. 3726 3727 #### func (*LkkTime) StartOfMonth 3728 3729 ```go 3730 func (kt *LkkTime) StartOfMonth(date time.Time) time.Time 3731 ``` 3732 StartOfMonth 获取日期中当月的开始时间. 3733 3734 #### func (*LkkTime) StartOfWeek 3735 3736 ```go 3737 func (kt *LkkTime) StartOfWeek(date time.Time, weekStartDay ...time.Weekday) time.Time 3738 ``` 3739 StartOfWeek 获取日期中当周的开始时间; weekStartDay 周几作为周的第一天,本库默认周一. 3740 3741 #### func (*LkkTime) StartOfYear 3742 3743 ```go 3744 func (kt *LkkTime) StartOfYear(date time.Time) time.Time 3745 ``` 3746 StartOfYear 获取日期中当年的开始时间. 3747 3748 #### func (*LkkTime) Str2Timestamp 3749 3750 ```go 3751 func (kt *LkkTime) Str2Timestamp(str string, format ...string) (int64, error) 3752 ``` 3753 Str2Timestamp 将字符串转换为时间戳,秒. str 为要转换的字符串; format 为该字符串的格式,默认为"2006-01-02 3754 15:04:05" . 3755 3756 #### func (*LkkTime) Str2Timestruct 3757 3758 ```go 3759 func (kt *LkkTime) Str2Timestruct(str string, format ...string) (time.Time, error) 3760 ``` 3761 Str2Time 将字符串转换为时间结构. str 为要转换的字符串; format 为该字符串的格式,默认为"2006-01-02 15:04:05" . 3762 3763 #### func (*LkkTime) UnixTime 3764 3765 ```go 3766 func (kt *LkkTime) UnixTime() int64 3767 ``` 3768 Time 获取当前Unix时间戳(秒,10位). 3769 3770 #### func (*LkkTime) Usleep 3771 3772 ```go 3773 func (kt *LkkTime) Usleep(t int64) 3774 ``` 3775 Usleep 以指定的微秒数延迟执行. 3776 3777 #### func (*LkkTime) Year 3778 3779 ```go 3780 func (kt *LkkTime) Year(t ...time.Time) int 3781 ``` 3782 Year 获取年份. 3783 3784 #### type SystemInfo 3785 3786 ```go 3787 type SystemInfo struct { 3788 ServerName string `json:"server_name"` //服务器名称 3789 SystemOs string `json:"system_os"` //操作系统名称 3790 Runtime uint64 `json:"run_time"` //服务运行时间,纳秒 3791 Uptime uint64 `json:"up_time"` //操作系统运行时间,秒 3792 GoroutineNum int `json:"goroutine_num"` //goroutine数量 3793 CpuNum int `json:"cpu_num"` //cpu核数 3794 CpuUser float64 `json:"cpu_user"` //cpu用户态比率 3795 CpuFree float64 `json:"cpu_free"` //cpu空闲比率 3796 DiskUsed uint64 `json:"disk_used"` //已用磁盘空间,字节数 3797 DiskFree uint64 `json:"disk_free"` //可用磁盘空间,字节数 3798 DiskTotal uint64 `json:"disk_total"` //总磁盘空间,字节数 3799 MemUsed uint64 `json:"mem_used"` //已用内存,字节数 3800 MemSys uint64 `json:"mem_sys"` //系统内存占用量,字节数 3801 MemFree uint64 `json:"mem_free"` //剩余内存,字节数 3802 MemTotal uint64 `json:"mem_total"` //总内存,字节数 3803 AllocGolang uint64 `json:"alloc_golang"` //golang内存使用量,字节数 3804 AllocTotal uint64 `json:"alloc_total"` //总分配的内存,字节数 3805 Lookups uint64 `json:"lookups"` //指针查找次数 3806 Mallocs uint64 `json:"mallocs"` //内存分配次数 3807 Frees uint64 `json:"frees"` //内存释放次数 3808 LastGCTime uint64 `json:"last_gc_time"` //上次GC时间,纳秒 3809 NextGC uint64 `json:"next_gc"` //下次GC内存回收量,字节数 3810 PauseTotalNs uint64 `json:"pause_total_ns"` //GC暂停时间总量,纳秒 3811 PauseNs uint64 `json:"pause_ns"` //上次GC暂停时间,纳秒 3812 } 3813 ``` 3814 3815 SystemInfo 系统信息 3816 3817 #### type Win32_Process 3818 3819 ```go 3820 type Win32_Process struct { 3821 Name string 3822 ExecutablePath *string 3823 CommandLine *string 3824 Priority uint32 3825 CreationDate *time.Time 3826 ProcessId uint32 3827 ThreadCount uint32 3828 Status *string 3829 ReadOperationCount uint64 3830 ReadTransferCount uint64 3831 WriteOperationCount uint64 3832 WriteTransferCount uint64 3833 CSCreationClassName string 3834 CSName string 3835 Caption *string 3836 CreationClassName string 3837 Description *string 3838 ExecutionState *uint16 3839 HandleCount uint32 3840 KernelModeTime uint64 3841 MaximumWorkingSetSize *uint32 3842 MinimumWorkingSetSize *uint32 3843 OSCreationClassName string 3844 OSName string 3845 OtherOperationCount uint64 3846 OtherTransferCount uint64 3847 PageFaults uint32 3848 PageFileUsage uint32 3849 ParentProcessID uint32 3850 PeakPageFileUsage uint32 3851 PeakVirtualSize uint64 3852 PeakWorkingSetSize uint32 3853 PrivatePageCount uint64 3854 TerminationDate *time.Time 3855 UserModeTime uint64 3856 WorkingSetSize uint64 3857 } 3858 ```