github.com/PandaGoAdmin/utils@v0.0.0-20211208134815-d5461603a00f/docs/v0.1.7.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.7" 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 VerifyFunc 338 339 ```go 340 func VerifyFunc(f interface{}, args ...interface{}) (vf reflect.Value, vargs []reflect.Value, err error) 341 ``` 342 VerifyFunc 验证是否函数,并且参数个数、类型是否正确. 返回有效的函数、有效的参数. 343 344 #### type BiosInfo 345 346 ```go 347 type BiosInfo struct { 348 Vendor string `json:"vendor"` 349 Version string `json:"version"` 350 Date string `json:"date"` 351 } 352 ``` 353 354 BiosInfo BIOS信息 355 356 #### type BoardInfo 357 358 ```go 359 type BoardInfo struct { 360 Name string `json:"name"` 361 Vendor string `json:"vendor"` 362 Version string `json:"version"` 363 Serial string `json:"serial"` 364 AssetTag string `json:"assettag"` 365 } 366 ``` 367 368 BoardInfo Board信息 369 370 #### type CallBack 371 372 ```go 373 type CallBack func() 374 ``` 375 376 CallBack 回调执行函数,无参数且无返回值 377 378 #### type CpuInfo 379 380 ```go 381 type CpuInfo struct { 382 Vendor string `json:"vendor"` 383 Model string `json:"model"` 384 Speed string `json:"speed"` // CPU clock rate in MHz 385 Cache uint `json:"cache"` // CPU cache size in KB 386 Cpus uint `json:"cpus"` // number of physical CPUs 387 Cores uint `json:"cores"` // number of physical CPU cores 388 Threads uint `json:"threads"` // number of logical (HT) CPU cores 389 } 390 ``` 391 392 CpuInfo CPU信息 393 394 #### type FileFilter 395 396 ```go 397 type FileFilter func(string) bool 398 ``` 399 400 FileFilter 文件过滤函数 401 402 #### type LkkArrCompareType 403 404 ```go 405 type LkkArrCompareType uint8 406 ``` 407 408 LkkArrCompareType 枚举类型,数组比较方式 409 410 #### type LkkArray 411 412 ```go 413 type LkkArray struct { 414 } 415 ``` 416 417 LkkArray is the receiver of array utilities 418 419 #### func (*LkkArray) ArrayChunk 420 421 ```go 422 func (ka *LkkArray) ArrayChunk(arr interface{}, size int) [][]interface{} 423 ``` 424 ArrayChunk 将一个数组/切片分割成多个,size为每个子数组的长度. 425 426 #### func (*LkkArray) ArrayColumn 427 428 ```go 429 func (ka *LkkArray) ArrayColumn(arr interface{}, columnKey string) []interface{} 430 ``` 431 ArrayColumn 返回数组(切片/字典/结构体)中元素指定的一列. arr的元素必须是字典; columnKey为元素的字段名; 该方法效率较低. 432 433 #### func (*LkkArray) ArrayDiff 434 435 ```go 436 func (ka *LkkArray) ArrayDiff(arr1, arr2 interface{}, compareType LkkArrCompareType) map[interface{}]interface{} 437 ``` 438 ArrayDiff 计算数组(数组/切片/字典)的交集,返回在 arr1 中但不在 arr2 里的元素,注意会同时返回键. 439 compareType为两个数组的比较方式,枚举类型,有: COMPARE_ONLY_VALUE 根据元素值比较, 返回在 arr1 中但是不在arr2 440 里的值; COMPARE_ONLY_KEY 根据 arr1 中的键名和 arr2 进行比较,返回不同键名的项; COMPARE_BOTH_KEYVALUE 441 同时比较键和值. 442 443 #### func (*LkkArray) ArrayFlip 444 445 ```go 446 func (ka *LkkArray) ArrayFlip(arr interface{}) map[interface{}]interface{} 447 ``` 448 ArrayFlip 交换数组(切片/字典)中的键和值. 449 450 #### func (*LkkArray) ArrayIntersect 451 452 ```go 453 func (ka *LkkArray) ArrayIntersect(arr1, arr2 interface{}, compareType LkkArrCompareType) map[interface{}]interface{} 454 ``` 455 ArrayIntersect 计算数组(数组/切片/字典)的交集,返回在 arr1 中且在 arr2 里的元素,注意会同时返回键. 456 compareType为两个数组的比较方式,枚举类型,有: COMPARE_ONLY_VALUE 根据元素值比较, 返回在 arr1 中且在arr2 里的值; 457 COMPARE_ONLY_KEY 根据 arr1 中的键名和 arr2 进行比较,返回相同键名的项; COMPARE_BOTH_KEYVALUE 458 同时比较键和值. 459 460 #### func (*LkkArray) ArrayKeyExists 461 462 ```go 463 func (ka *LkkArray) ArrayKeyExists(key interface{}, arr interface{}) bool 464 ``` 465 ArrayKeyExists 检查arr(数组/切片/字典/结构体)里是否有key指定的键名(索引/字段). 466 467 #### func (*LkkArray) ArrayKeys 468 469 ```go 470 func (ka *LkkArray) ArrayKeys(arr interface{}) []interface{} 471 ``` 472 ArrayKeys 返回数组(切片/字典/结构体)中所有的键名;如果是结构体,只返回公开的字段. 473 474 #### func (*LkkArray) ArrayPad 475 476 ```go 477 func (ka *LkkArray) ArrayPad(arr interface{}, size int, item interface{}) []interface{} 478 ``` 479 ArrayPad 以指定长度将一个值item填充进arr数组/切片. 若 size 为正,则填补到数组的右侧,如果为负则从左侧开始填补; 若 size 480 的绝对值小于或等于 arr 数组的长度则没有任何填补. 481 482 #### func (*LkkArray) ArrayRand 483 484 ```go 485 func (ka *LkkArray) ArrayRand(arr interface{}, num int) []interface{} 486 ``` 487 ArrayRand 从数组(切片/字典)中随机取出num个元素. 488 489 #### func (*LkkArray) ArrayReverse 490 491 ```go 492 func (ka *LkkArray) ArrayReverse(arr interface{}) []interface{} 493 ``` 494 ArrayReverse 返回单元顺序相反的数组(仅限数组和切片). 495 496 #### func (*LkkArray) ArraySearchItem 497 498 ```go 499 func (ka *LkkArray) ArraySearchItem(arr interface{}, condition map[string]interface{}) (res interface{}) 500 ``` 501 ArraySearchItem 从数组(切片/字典)中搜索对应元素(单个). arr为要查找的数组,元素必须为字典/结构体;condition为条件字典. 502 503 #### func (*LkkArray) ArraySearchMutil 504 505 ```go 506 func (ka *LkkArray) ArraySearchMutil(arr interface{}, condition map[string]interface{}) (res []interface{}) 507 ``` 508 ArraySearchMutil 从数组(切片/字典)中搜索对应元素(多个). arr为要查找的数组,元素必须为字典/结构体;condition为条件字典. 509 510 #### func (*LkkArray) ArrayShuffle 511 512 ```go 513 func (ka *LkkArray) ArrayShuffle(arr interface{}) []interface{} 514 ``` 515 ArrayShuffle 打乱数组/切片排序. 516 517 #### func (*LkkArray) ArrayUnique 518 519 ```go 520 func (ka *LkkArray) ArrayUnique(arr interface{}) map[interface{}]interface{} 521 ``` 522 ArrayUnique 移除数组(切片/字典)中重复的值,返回字典,保留键名. 523 524 #### func (*LkkArray) ArrayValues 525 526 ```go 527 func (ka *LkkArray) ArrayValues(arr interface{}, filterZero bool) []interface{} 528 ``` 529 ArrayValues 返回arr(数组/切片/字典/结构体)中所有的值;如果是结构体,只返回公开字段的值. filterZero 530 是否过滤零值元素(nil,false,0,"",[]),true时排除零值元素,false时保留零值元素. 531 532 #### func (*LkkArray) CutSlice 533 534 ```go 535 func (ka *LkkArray) CutSlice(arr interface{}, offset, size int) []interface{} 536 ``` 537 CutSlice 裁剪切片,返回根据offset(起始位置)和size(数量)参数所指定的arr(数组/切片)中的一段切片. 538 539 #### func (*LkkArray) DeleteSliceItems 540 541 ```go 542 func (ka *LkkArray) DeleteSliceItems(val interface{}, ids ...int) (res []interface{}, del int) 543 ``` 544 DeleteSliceItems 删除数组/切片的元素,返回一个新切片. ids为多个元素的索引(0~len(val)-1); del为删除元素的数量. 545 546 #### func (*LkkArray) Implode 547 548 ```go 549 func (ka *LkkArray) Implode(delimiter string, arr interface{}) string 550 ``` 551 Implode 用delimiter将数组(数组/切片/字典/结构体)的值连接为一个字符串. 552 553 #### func (*LkkArray) InArray 554 555 ```go 556 func (ka *LkkArray) InArray(needle interface{}, haystack interface{}) bool 557 ``` 558 InArray 元素needle是否在数组haystack(切片/字典)内. 559 560 #### func (*LkkArray) InInt64Slice 561 562 ```go 563 func (ka *LkkArray) InInt64Slice(i int64, list []int64) bool 564 ``` 565 InInt64Slice 是否在64位整型切片内. 566 567 #### func (*LkkArray) InIntSlice 568 569 ```go 570 func (ka *LkkArray) InIntSlice(i int, list []int) bool 571 ``` 572 InIntSlice 是否在整型切片内. 573 574 #### func (*LkkArray) InStringSlice 575 576 ```go 577 func (ka *LkkArray) InStringSlice(str string, list []string) bool 578 ``` 579 InStringSlice 是否在字符串切片内. 580 581 #### func (*LkkArray) IsArray 582 583 ```go 584 func (ka *LkkArray) IsArray(val interface{}) bool 585 ``` 586 IsArray 变量是否数组. 587 588 #### func (*LkkArray) IsArrayOrSlice 589 590 ```go 591 func (ka *LkkArray) IsArrayOrSlice(val interface{}) bool 592 ``` 593 IsArrayOrSlice 变量是否数组或切片. 594 595 #### func (*LkkArray) IsEqualArray 596 597 ```go 598 func (ka *LkkArray) IsEqualArray(arr1, arr2 interface{}) bool 599 ``` 600 IsEqualArray 两个数组/切片是否相同(不管元素顺序),且不会检查元素类型; arr1, arr2 是要比较的数组/切片. 601 602 #### func (*LkkArray) IsEqualMap 603 604 ```go 605 func (ka *LkkArray) IsEqualMap(arr1, arr2 interface{}) bool 606 ``` 607 IsEqualMap 两个字典是否相同(不管键顺序),且不会严格检查元素类型; arr1, arr2 是要比较的字典. 608 609 #### func (*LkkArray) IsMap 610 611 ```go 612 func (ka *LkkArray) IsMap(val interface{}) bool 613 ``` 614 IsMap 变量是否字典. 615 616 #### func (*LkkArray) IsSlice 617 618 ```go 619 func (ka *LkkArray) IsSlice(val interface{}) bool 620 ``` 621 IsSlice 变量是否切片. 622 623 #### func (*LkkArray) IsStruct 624 625 ```go 626 func (ka *LkkArray) IsStruct(val interface{}) bool 627 ``` 628 IsStruct 变量是否结构体. 629 630 #### func (*LkkArray) JoinInts 631 632 ```go 633 func (ka *LkkArray) JoinInts(delimiter string, ints []int) (res string) 634 ``` 635 JoinInts 使用分隔符delimiter连接整数切片. 636 637 #### func (*LkkArray) JoinStrings 638 639 ```go 640 func (ka *LkkArray) JoinStrings(delimiter string, strs []string) (res string) 641 ``` 642 JoinStrings 使用分隔符delimiter连接字符串切片strs.效率比Implode高. 643 644 #### func (*LkkArray) Length 645 646 ```go 647 func (ka *LkkArray) Length(val interface{}) int 648 ``` 649 Length 获取数组/切片的长度;结果为-1表示变量不是数组或切片. 650 651 #### func (*LkkArray) MergeMap 652 653 ```go 654 func (ka *LkkArray) MergeMap(ss ...interface{}) map[interface{}]interface{} 655 ``` 656 MergeMap 合并字典,相同的键名时,后面的值将覆盖前一个值. ss是元素为字典的切片. 657 658 #### func (*LkkArray) MergeSlice 659 660 ```go 661 func (ka *LkkArray) MergeSlice(filterZero bool, ss ...interface{}) []interface{} 662 ``` 663 MergeSlice 合并一个或多个数组/切片. filterZero 664 是否过滤零值元素(nil,false,0,'',[]),true时排除零值元素,false时保留零值元素. ss是元素为数组/切片的切片. 665 666 #### func (*LkkArray) NewStrMapItf 667 668 ```go 669 func (ka *LkkArray) NewStrMapItf() map[string]interface{} 670 ``` 671 NewStrMapItf 新建[字符-接口]字典. 672 673 #### func (*LkkArray) NewStrMapStr 674 675 ```go 676 func (ka *LkkArray) NewStrMapStr() map[string]string 677 ``` 678 NewStrMapStr 新建[字符-字符]字典. 679 680 #### func (*LkkArray) SliceFill 681 682 ```go 683 func (ka *LkkArray) SliceFill(val interface{}, num int) []interface{} 684 ``` 685 SliceFill 用给定的值val填充切片,num为插入元素的数量. 686 687 #### func (*LkkArray) SlicePop 688 689 ```go 690 func (ka *LkkArray) SlicePop(s *[]interface{}) interface{} 691 ``` 692 SlicePop 弹出切片最后一个元素(出栈),并返回该元素. 693 694 #### func (*LkkArray) SlicePush 695 696 ```go 697 func (ka *LkkArray) SlicePush(s *[]interface{}, elements ...interface{}) int 698 ``` 699 SlicePush 将一个或多个元素压入切片的末尾(入栈),返回处理之后切片的元素个数. 700 701 #### func (*LkkArray) SliceShift 702 703 ```go 704 func (ka *LkkArray) SliceShift(s *[]interface{}) interface{} 705 ``` 706 SliceShift 将切片开头的元素移出,并返回该元素. 707 708 #### func (*LkkArray) SliceUnshift 709 710 ```go 711 func (ka *LkkArray) SliceUnshift(s *[]interface{}, elements ...interface{}) int 712 ``` 713 SliceUnshift 在切片开头插入一个或多个元素,返回处理之后切片的元素个数. 714 715 #### func (*LkkArray) Unique64Ints 716 717 ```go 718 func (ka *LkkArray) Unique64Ints(ints []int64) (res []int64) 719 ``` 720 Unique64Ints 移除64位整数切片中的重复值. 721 722 #### func (*LkkArray) UniqueInts 723 724 ```go 725 func (ka *LkkArray) UniqueInts(ints []int) (res []int) 726 ``` 727 UniqueInts 移除整数切片中的重复值. 728 729 #### func (*LkkArray) UniqueStrings 730 731 ```go 732 func (ka *LkkArray) UniqueStrings(strs []string) (res []string) 733 ``` 734 UniqueStrings 移除字符串切片中的重复值. 735 736 #### type LkkCaseSwitch 737 738 ```go 739 type LkkCaseSwitch uint8 740 ``` 741 742 LkkCaseSwitch 枚举类型,大小写开关 743 744 #### type LkkConvert 745 746 ```go 747 type LkkConvert struct { 748 } 749 ``` 750 751 LkkConvert is the receiver of convert utilities 752 753 #### func (*LkkConvert) BaseConvert 754 755 ```go 756 func (kc *LkkConvert) BaseConvert(num string, frombase, tobase int) (string, error) 757 ``` 758 BaseConvert 进制转换,在任意进制之间转换数字. num为输入数值,frombase为原进制,tobase为结果进制. 759 760 #### func (*LkkConvert) Bin2Dec 761 762 ```go 763 func (kc *LkkConvert) Bin2Dec(str string) (int64, error) 764 ``` 765 Bin2Dec 将二进制字符串转换为十进制. 766 767 #### func (*LkkConvert) Bin2Hex 768 769 ```go 770 func (kc *LkkConvert) Bin2Hex(str string) (string, error) 771 ``` 772 Bin2Hex 将二进制字符串转换为十六进制字符串. 773 774 #### func (*LkkConvert) Bool2Int 775 776 ```go 777 func (kc *LkkConvert) Bool2Int(val bool) int 778 ``` 779 Bool2Int 将布尔值转换为整型. 780 781 #### func (*LkkConvert) Bool2Str 782 783 ```go 784 func (kc *LkkConvert) Bool2Str(val bool) string 785 ``` 786 Bool2Str 将布尔值转换为字符串. 787 788 #### func (*LkkConvert) Byte2Float64 789 790 ```go 791 func (kc *LkkConvert) Byte2Float64(bytes []byte) float64 792 ``` 793 Byte2Float64 字节切片转64位浮点数. 794 795 #### func (*LkkConvert) Byte2Hex 796 797 ```go 798 func (kc *LkkConvert) Byte2Hex(val []byte) string 799 ``` 800 Byte2Hex 字节切片转16进制字符串. 801 802 #### func (*LkkConvert) Byte2Hexs 803 804 ```go 805 func (kc *LkkConvert) Byte2Hexs(val []byte) []byte 806 ``` 807 Byte2Hexs 字节切片转16进制切片. 808 809 #### func (*LkkConvert) Byte2Int64 810 811 ```go 812 func (kc *LkkConvert) Byte2Int64(val []byte) int64 813 ``` 814 Byte2Int64 字节切片转64位整型. 815 816 #### func (*LkkConvert) Bytes2Str 817 818 ```go 819 func (kc *LkkConvert) Bytes2Str(val []byte) string 820 ``` 821 Bytes2Str 将字节切片转换为字符串. 822 823 #### func (*LkkConvert) Bytes2StrUnsafe 824 825 ```go 826 func (kc *LkkConvert) Bytes2StrUnsafe(val []byte) string 827 ``` 828 Bytes2StrUnsafe (非安全的)将字节切片转换为字符串. 829 零拷贝,不安全.效率是string([]byte{})的百倍以上,且转换量越大效率优势越明显. 830 831 #### func (*LkkConvert) Dec2Bin 832 833 ```go 834 func (kc *LkkConvert) Dec2Bin(num int64) string 835 ``` 836 Dec2Bin 将十进制转换为二进制字符串. 837 838 #### func (*LkkConvert) Dec2Hex 839 840 ```go 841 func (kc *LkkConvert) Dec2Hex(num int64) string 842 ``` 843 Dec2Hex 将十进制转换为十六进制. 844 845 #### func (*LkkConvert) Dec2Oct 846 847 ```go 848 func (kc *LkkConvert) Dec2Oct(num int64) string 849 ``` 850 Dec2Oct 将十进制转换为八进制. 851 852 #### func (*LkkConvert) Float2Str 853 854 ```go 855 func (kc *LkkConvert) Float2Str(val interface{}, decimal int) string 856 ``` 857 Float2Str 将浮点数转换为字符串,decimal为小数位数. 858 859 #### func (*LkkConvert) Float64ToByte 860 861 ```go 862 func (kc *LkkConvert) Float64ToByte(val float64) []byte 863 ``` 864 Float64ToByte 64位浮点数转字节切片. 865 866 #### func (*LkkConvert) Hex2Bin 867 868 ```go 869 func (kc *LkkConvert) Hex2Bin(str string) (string, error) 870 ``` 871 Hex2Bin 将十六进制字符串转换为二进制字符串. 872 873 #### func (*LkkConvert) Hex2Byte 874 875 ```go 876 func (kc *LkkConvert) Hex2Byte(str string) []byte 877 ``` 878 Hex2Byte 16进制字符串转字节切片. 879 880 #### func (*LkkConvert) Hex2Dec 881 882 ```go 883 func (kc *LkkConvert) Hex2Dec(str string) (int64, error) 884 ``` 885 Hex2Dec 将十六进制转换为十进制. 886 887 #### func (*LkkConvert) Hexs2Byte 888 889 ```go 890 func (kc *LkkConvert) Hexs2Byte(val []byte) []byte 891 ``` 892 Hexs2Byte 16进制切片转byte切片. 893 894 #### func (*LkkConvert) Int2Str 895 896 ```go 897 func (kc *LkkConvert) Int2Str(val interface{}) string 898 ``` 899 Int2Str 将整数转换为字符串. 900 901 #### func (*LkkConvert) Int64ToByte 902 903 ```go 904 func (kc *LkkConvert) Int64ToByte(val int64) []byte 905 ``` 906 Int64ToByte 64位整型转字节切片. 907 908 #### func (*LkkConvert) Ip2Long 909 910 ```go 911 func (kc *LkkConvert) Ip2Long(ipAddress string) uint32 912 ``` 913 Ip2Long 将 IPV4 的字符串互联网协议转换成长整型数字. 914 915 #### func (*LkkConvert) IsBinary 916 917 ```go 918 func (kc *LkkConvert) IsBinary(s string) bool 919 ``` 920 IsBinary 字符串是否二进制. 921 922 #### func (*LkkConvert) IsBool 923 924 ```go 925 func (kc *LkkConvert) IsBool(val interface{}) bool 926 ``` 927 IsBool 是否布尔值. 928 929 #### func (*LkkConvert) IsByte 930 931 ```go 932 func (kc *LkkConvert) IsByte(val interface{}) bool 933 ``` 934 IsByte 变量是否字节切片. 935 936 #### func (*LkkConvert) IsEmpty 937 938 ```go 939 func (kc *LkkConvert) IsEmpty(val interface{}) bool 940 ``` 941 IsEmpty 变量是否为空. 942 943 #### func (*LkkConvert) IsFloat 944 945 ```go 946 func (kc *LkkConvert) IsFloat(val interface{}) bool 947 ``` 948 IsFloat 变量是否浮点数值. 949 950 #### func (*LkkConvert) IsHex 951 952 ```go 953 func (kc *LkkConvert) IsHex(str string) bool 954 ``` 955 IsHex 是否十六进制字符串. 956 957 #### func (*LkkConvert) IsInt 958 959 ```go 960 func (kc *LkkConvert) IsInt(val interface{}) bool 961 ``` 962 IsInt 变量是否整型数值. 963 964 #### func (*LkkConvert) IsInterface 965 966 ```go 967 func (kc *LkkConvert) IsInterface(val interface{}) bool 968 ``` 969 IsInterface 变量是否接口. 970 971 #### func (*LkkConvert) IsNil 972 973 ```go 974 func (kc *LkkConvert) IsNil(val interface{}) bool 975 ``` 976 IsNil 变量是否nil. 977 978 #### func (*LkkConvert) IsNumeric 979 980 ```go 981 func (kc *LkkConvert) IsNumeric(val interface{}) bool 982 ``` 983 IsNumeric 变量是否数值(不包含复数和科学计数法). 984 985 #### func (*LkkConvert) IsPort 986 987 ```go 988 func (kc *LkkConvert) IsPort(val interface{}) bool 989 ``` 990 IsPort 变量值是否端口号(1~65535). 991 992 #### func (*LkkConvert) IsString 993 994 ```go 995 func (kc *LkkConvert) IsString(val interface{}) bool 996 ``` 997 IsString 变量是否字符串. 998 999 #### func (*LkkConvert) IsStruct 1000 1001 ```go 1002 func (kc *LkkConvert) IsStruct(val interface{}) bool 1003 ``` 1004 IsStruct 变量是否结构体. 1005 1006 #### func (*LkkConvert) Long2Ip 1007 1008 ```go 1009 func (kc *LkkConvert) Long2Ip(properAddress uint32) string 1010 ``` 1011 Long2Ip 将长整型转化为字符串形式带点的互联网标准格式地址(IPV4). 1012 1013 #### func (*LkkConvert) Oct2Dec 1014 1015 ```go 1016 func (kc *LkkConvert) Oct2Dec(str string) (int64, error) 1017 ``` 1018 Oct2Dec 将八进制转换为十进制. 1019 1020 #### func (*LkkConvert) Runes2Bytes 1021 1022 ```go 1023 func (kc *LkkConvert) Runes2Bytes(rs []rune) []byte 1024 ``` 1025 Runes2Bytes 将[]rune转为[]byte. 1026 1027 #### func (*LkkConvert) Str2Bool 1028 1029 ```go 1030 func (kc *LkkConvert) Str2Bool(val string) bool 1031 ``` 1032 Str2Bool 将字符串转换为布尔值. 1, t, T, TRUE, true, True 等字符串为真; 0, f, F, FALSE, false, 1033 False 等字符串为假. 1034 1035 #### func (*LkkConvert) Str2Bytes 1036 1037 ```go 1038 func (kc *LkkConvert) Str2Bytes(val string) []byte 1039 ``` 1040 Str2Bytes 将字符串转换为字节切片. 1041 1042 #### func (*LkkConvert) Str2BytesUnsafe 1043 1044 ```go 1045 func (kc *LkkConvert) Str2BytesUnsafe(val string) []byte 1046 ``` 1047 Str2BytesUnsafe (非安全的)将字符串转换为字节切片. 该方法零拷贝,但不安全.它直接转换底层指针,两者指向的相同的内存,改一个另外一个也会变. 1048 仅当临时需将长字符串转换且不长时间保存时可以使用. 转换之后若没做其他操作直接改变里面的字符,则程序会崩溃. 如 1049 b:=Str2BytesUnsafe("xxx"); b[1]='d'; 程序将panic. 1050 1051 #### func (*LkkConvert) Str2Float32 1052 1053 ```go 1054 func (kc *LkkConvert) Str2Float32(val string) float32 1055 ``` 1056 Str2Float32 将字符串转换为float32;其中"true", "TRUE", "True"为1.0 . 1057 1058 #### func (*LkkConvert) Str2Float64 1059 1060 ```go 1061 func (kc *LkkConvert) Str2Float64(val string) float64 1062 ``` 1063 Str2Float64 将字符串转换为float64;其中"true", "TRUE", "True"为1.0 . 1064 1065 #### func (*LkkConvert) Str2Int 1066 1067 ```go 1068 func (kc *LkkConvert) Str2Int(val string) int 1069 ``` 1070 Str2Int 将字符串转换为int.其中"true", "TRUE", "True"为1;若为浮点字符串,则取整数部分. 1071 1072 #### func (*LkkConvert) Str2Int16 1073 1074 ```go 1075 func (kc *LkkConvert) Str2Int16(val string) int16 1076 ``` 1077 Str2Int16 将字符串转换为int16. 1078 1079 #### func (*LkkConvert) Str2Int32 1080 1081 ```go 1082 func (kc *LkkConvert) Str2Int32(val string) int32 1083 ``` 1084 Str2Int32 将字符串转换为int32. 1085 1086 #### func (*LkkConvert) Str2Int64 1087 1088 ```go 1089 func (kc *LkkConvert) Str2Int64(val string) int64 1090 ``` 1091 Str2Int64 将字符串转换为int64. 1092 1093 #### func (*LkkConvert) Str2Int8 1094 1095 ```go 1096 func (kc *LkkConvert) Str2Int8(val string) int8 1097 ``` 1098 Str2Int8 将字符串转换为int8. 1099 1100 #### func (*LkkConvert) Str2Uint 1101 1102 ```go 1103 func (kc *LkkConvert) Str2Uint(val string) uint 1104 ``` 1105 Str2Uint 将字符串转换为uint.其中"true", "TRUE", "True"为1;若为浮点字符串,则取整数部分;若为负值则取0. 1106 1107 #### func (*LkkConvert) Str2Uint16 1108 1109 ```go 1110 func (kc *LkkConvert) Str2Uint16(val string) uint16 1111 ``` 1112 Str2Uint16 将字符串转换为uint16. 1113 1114 #### func (*LkkConvert) Str2Uint32 1115 1116 ```go 1117 func (kc *LkkConvert) Str2Uint32(val string) uint32 1118 ``` 1119 Str2Uint32 将字符串转换为uint32. 1120 1121 #### func (*LkkConvert) Str2Uint64 1122 1123 ```go 1124 func (kc *LkkConvert) Str2Uint64(val string) uint64 1125 ``` 1126 Str2Uint64 将字符串转换为uint64. 1127 1128 #### func (*LkkConvert) Str2Uint8 1129 1130 ```go 1131 func (kc *LkkConvert) Str2Uint8(val string) uint8 1132 ``` 1133 Str2Uint8 将字符串转换为uint8. 1134 1135 #### func (*LkkConvert) Struct2Map 1136 1137 ```go 1138 func (kc *LkkConvert) Struct2Map(obj interface{}, tagName string) (map[string]interface{}, error) 1139 ``` 1140 Struct2Map 结构体转为字典;tagName为要导出的标签名,可以为空,为空时将导出所有字段. 1141 1142 #### func (*LkkConvert) ToBool 1143 1144 ```go 1145 func (kc *LkkConvert) ToBool(val interface{}) bool 1146 ``` 1147 ToBool 强制将变量转换为布尔值. 数值类型将检查值是否>0; 字符串将使用Str2Bool; 数组、切片、字典、通道类型将检查它们的长度是否>0; 1148 指针、结构体类型为true,其他为false. 1149 1150 #### func (*LkkConvert) ToFloat 1151 1152 ```go 1153 func (kc *LkkConvert) ToFloat(val interface{}) (res float64) 1154 ``` 1155 ToFloat 强制将变量转换为浮点型. 数值类型将转为浮点型; 字符串将使用Str2Float64; 布尔型的true为1.0,false为0; 1156 数组、切片、字典、通道类型将取它们的长度; 指针、结构体类型为1.0,其他为0. 1157 1158 #### func (*LkkConvert) ToInt 1159 1160 ```go 1161 func (kc *LkkConvert) ToInt(val interface{}) int 1162 ``` 1163 ToInt 强制将变量转换为整型. 数值类型将转为整型; 字符串类型将使用Str2Int; 布尔型的true为1,false为0; 1164 数组、切片、字典、通道类型将取它们的长度; 指针、结构体类型为1,其他为0. 1165 1166 #### func (*LkkConvert) ToStr 1167 1168 ```go 1169 func (kc *LkkConvert) ToStr(val interface{}) string 1170 ``` 1171 ToStr 强制将变量转换为字符串. 1172 1173 #### type LkkDebug 1174 1175 ```go 1176 type LkkDebug struct { 1177 } 1178 ``` 1179 1180 LkkDebug is the receiver of debug utilities 1181 1182 #### func (*LkkDebug) CallMethod 1183 1184 ```go 1185 func (kd *LkkDebug) CallMethod(t interface{}, method string, args ...interface{}) ([]interface{}, error) 1186 ``` 1187 CallMethod 调用对象的方法. 若执行成功,则结果是该方法的返回结果; 否则返回(nil, error). 1188 1189 #### func (*LkkDebug) DumpPrint 1190 1191 ```go 1192 func (ks *LkkDebug) DumpPrint(vs ...interface{}) 1193 ``` 1194 DumpPrint 打印调试变量. 1195 1196 #### func (*LkkDebug) DumpStacks 1197 1198 ```go 1199 func (kd *LkkDebug) DumpStacks() 1200 ``` 1201 DumpStacks 打印堆栈信息. 1202 1203 #### func (*LkkDebug) GetCallDir 1204 1205 ```go 1206 func (kd *LkkDebug) GetCallDir() string 1207 ``` 1208 GetCallDir 获取调用方法的文件目录. 1209 1210 #### func (*LkkDebug) GetCallFile 1211 1212 ```go 1213 func (kd *LkkDebug) GetCallFile() string 1214 ``` 1215 GetCallFile 获取调用方法的文件路径. 1216 1217 #### func (*LkkDebug) GetCallLine 1218 1219 ```go 1220 func (kd *LkkDebug) GetCallLine() int 1221 ``` 1222 GetCallLine 获取调用方法的行号. 1223 1224 #### func (*LkkDebug) GetCallName 1225 1226 ```go 1227 func (kd *LkkDebug) GetCallName(f interface{}, onlyFun bool) string 1228 ``` 1229 GetCallName 获取调用的方法名称;f为目标方法;onlyFun为true时仅返回方法,不包括包名. 1230 1231 #### func (*LkkDebug) GetCallPackage 1232 1233 ```go 1234 func (kd *LkkDebug) GetCallPackage(callFile ...string) string 1235 ``` 1236 GetCallPackage 获取调用方法或调用文件的包名.callFile为调用文件路径. 1237 1238 #### func (*LkkDebug) GetFuncNames 1239 1240 ```go 1241 func (kd *LkkDebug) GetFuncNames(obj interface{}) (res []string) 1242 ``` 1243 GetFuncNames 获取变量的所有(公开的)函数名. 1244 1245 #### func (*LkkDebug) GetMethod 1246 1247 ```go 1248 func (kd *LkkDebug) GetMethod(t interface{}, method string) interface{} 1249 ``` 1250 GetMethod 获取对象t中的method方法. 注意:返回的方法中的第一个参数是接收者. 所以,调用返回的方法时,必须将接收者作为第一个参数传递. 1251 1252 #### func (*LkkDebug) HasMethod 1253 1254 ```go 1255 func (kd *LkkDebug) HasMethod(t interface{}, method string) bool 1256 ``` 1257 HasMethod 检查对象t是否具有method方法. 1258 1259 #### type LkkEncrypt 1260 1261 ```go 1262 type LkkEncrypt struct { 1263 } 1264 ``` 1265 1266 LkkEncrypt is the receiver of encrypt utilities 1267 1268 #### func (*LkkEncrypt) AesCBCDecrypt 1269 1270 ```go 1271 func (ke *LkkEncrypt) AesCBCDecrypt(cipherText, key []byte, paddingType ...LkkPKCSType) ([]byte, error) 1272 ``` 1273 AesCBCDecrypt AES-CBC密码分组链接(Cipher-block chaining)模式解密. 1274 cipherText为密文;key为密钥,长16/24/32;paddingType为填充方式,枚举(PKCS_NONE,PKCS_ZERO,PKCS_SEVEN),默认PKCS_SEVEN. 1275 1276 #### func (*LkkEncrypt) AesCBCEncrypt 1277 1278 ```go 1279 func (ke *LkkEncrypt) AesCBCEncrypt(clearText, key []byte, paddingType ...LkkPKCSType) ([]byte, error) 1280 ``` 1281 AesCBCEncrypt AES-CBC密码分组链接(Cipher-block chaining)模式加密.加密无法并行,不适合对流数据加密. 1282 clearText为明文;key为密钥,长16/24/32;paddingType为填充方式,枚举(PKCS_ZERO,PKCS_SEVEN),默认PKCS_SEVEN. 1283 1284 #### func (*LkkEncrypt) AesCFBDecrypt 1285 1286 ```go 1287 func (ke *LkkEncrypt) AesCFBDecrypt(cipherText, key []byte) ([]byte, error) 1288 ``` 1289 AesCFBDecrypt AES-CFB密文反馈(Cipher feedback)模式解密. cipherText为密文;key为密钥,长16/24/32. 1290 1291 #### func (*LkkEncrypt) AesCFBEncrypt 1292 1293 ```go 1294 func (ke *LkkEncrypt) AesCFBEncrypt(clearText, key []byte) ([]byte, error) 1295 ``` 1296 AesCFBEncrypt AES-CFB密文反馈(Cipher feedback)模式加密.适合对流数据加密. 1297 clearText为明文;key为密钥,长16/24/32. 1298 1299 #### func (*LkkEncrypt) AesCTRDecrypt 1300 1301 ```go 1302 func (ke *LkkEncrypt) AesCTRDecrypt(cipherText, key []byte) ([]byte, error) 1303 ``` 1304 AesCTRDecrypt AES-CTR计算器(Counter)模式解密. cipherText为密文;key为密钥,长16/24/32. 1305 1306 #### func (*LkkEncrypt) AesCTREncrypt 1307 1308 ```go 1309 func (ke *LkkEncrypt) AesCTREncrypt(clearText, key []byte) ([]byte, error) 1310 ``` 1311 AesCTREncrypt AES-CTR计算器(Counter)模式加密. clearText为明文;key为密钥,长16/24/32. 1312 1313 #### func (*LkkEncrypt) AesOFBDecrypt 1314 1315 ```go 1316 func (ke *LkkEncrypt) AesOFBDecrypt(cipherText, key []byte) ([]byte, error) 1317 ``` 1318 AesOFBDecrypt AES-OFB输出反馈(Output feedback)模式解密. cipherText为密文;key为密钥,长16/24/32. 1319 1320 #### func (*LkkEncrypt) AesOFBEncrypt 1321 1322 ```go 1323 func (ke *LkkEncrypt) AesOFBEncrypt(clearText, key []byte) ([]byte, error) 1324 ``` 1325 AesOFBEncrypt AES-OFB输出反馈(Output feedback)模式加密.适合对流数据加密. 1326 clearText为明文;key为密钥,长16/24/32. 1327 1328 #### func (*LkkEncrypt) AuthCode 1329 1330 ```go 1331 func (ke *LkkEncrypt) AuthCode(str, key []byte, encode bool, expiry int64) ([]byte, int64) 1332 ``` 1333 AuthCode 授权码编码或解码;encode为true时编码,为false解码;expiry为有效期,秒;返回结果为加密/解密的字符串和有效期时间戳. 1334 1335 #### func (*LkkEncrypt) Base64Decode 1336 1337 ```go 1338 func (ke *LkkEncrypt) Base64Decode(str []byte) ([]byte, error) 1339 ``` 1340 Base64Decode 对使用 MIME base64 编码的数据进行解码. 1341 1342 #### func (*LkkEncrypt) Base64Encode 1343 1344 ```go 1345 func (ke *LkkEncrypt) Base64Encode(str []byte) []byte 1346 ``` 1347 Base64Encode 使用 MIME base64 对数据进行编码. 1348 1349 #### func (*LkkEncrypt) Base64UrlDecode 1350 1351 ```go 1352 func (ke *LkkEncrypt) Base64UrlDecode(str []byte) ([]byte, error) 1353 ``` 1354 Base64UrlDecode url安全的Base64Decode. 1355 1356 #### func (*LkkEncrypt) Base64UrlEncode 1357 1358 ```go 1359 func (ke *LkkEncrypt) Base64UrlEncode(str []byte) []byte 1360 ``` 1361 Base64UrlSafeEncode url安全的Base64Encode,没有'/'和'+'及结尾的'=' . 1362 1363 #### func (*LkkEncrypt) EasyDecrypt 1364 1365 ```go 1366 func (ke *LkkEncrypt) EasyDecrypt(val, key []byte) []byte 1367 ``` 1368 EasyDecrypt 简单解密. val为待解密的字符串,key为密钥. 1369 1370 #### func (*LkkEncrypt) EasyEncrypt 1371 1372 ```go 1373 func (ke *LkkEncrypt) EasyEncrypt(data, key []byte) []byte 1374 ``` 1375 EasyEncrypt 简单加密. data为要加密的原字符串,key为密钥. 1376 1377 #### func (*LkkEncrypt) GenerateRsaKeys 1378 1379 ```go 1380 func (ke *LkkEncrypt) GenerateRsaKeys(bits int) (private []byte, public []byte, err error) 1381 ``` 1382 GenerateRsaKeys 生成RSA密钥对.bits为密钥位数,通常为1024或2048. 1383 1384 #### func (*LkkEncrypt) HmacShaX 1385 1386 ```go 1387 func (ke *LkkEncrypt) HmacShaX(data, secret []byte, x uint16) []byte 1388 ``` 1389 HmacShaX HmacSHA-x加密,x为1/256/512 . 1390 1391 #### func (*LkkEncrypt) PasswordHash 1392 1393 ```go 1394 func (ke *LkkEncrypt) PasswordHash(password []byte, costs ...int) ([]byte, error) 1395 ``` 1396 PasswordHash 创建密码的散列值;costs为算法的cost,范围4~31,默认10;注意:值越大越耗时. 1397 1398 #### func (*LkkEncrypt) PasswordVerify 1399 1400 ```go 1401 func (ke *LkkEncrypt) PasswordVerify(password, hash []byte) bool 1402 ``` 1403 PasswordVerify 验证密码是否和散列值匹配. 1404 1405 #### func (*LkkEncrypt) RsaPrivateDecrypt 1406 1407 ```go 1408 func (ke *LkkEncrypt) RsaPrivateDecrypt(cipherText, privateKey []byte) ([]byte, error) 1409 ``` 1410 RsaPrivateDecrypt RSA私钥解密.比加密耗时. cipherText为密文,privateKey为私钥. 1411 1412 #### func (*LkkEncrypt) RsaPrivateEncrypt 1413 1414 ```go 1415 func (ke *LkkEncrypt) RsaPrivateEncrypt(clearText, privateKey []byte) ([]byte, error) 1416 ``` 1417 RsaPrivateEncrypt RSA私钥加密.比解密耗时. clearText为明文,privateKey为私钥. 1418 1419 #### func (*LkkEncrypt) RsaPublicDecrypt 1420 1421 ```go 1422 func (ke *LkkEncrypt) RsaPublicDecrypt(cipherText, publicKey []byte) ([]byte, error) 1423 ``` 1424 RsaPublicDecrypt RSA公钥解密. cipherText为密文,publicKey为公钥. 1425 1426 #### func (*LkkEncrypt) RsaPublicEncrypt 1427 1428 ```go 1429 func (ke *LkkEncrypt) RsaPublicEncrypt(clearText, publicKey []byte) ([]byte, error) 1430 ``` 1431 RsaPublicEncrypt RSA公钥加密. clearText为明文,publicKey为公钥. 1432 1433 #### type LkkFile 1434 1435 ```go 1436 type LkkFile struct { 1437 } 1438 ``` 1439 1440 LkkFile is the receiver of file utilities 1441 1442 #### func (*LkkFile) AbsPath 1443 1444 ```go 1445 func (kf *LkkFile) AbsPath(fpath string) string 1446 ``` 1447 AbsPath 获取绝对路径,path可允许不存在. 1448 1449 #### func (*LkkFile) AppendFile 1450 1451 ```go 1452 func (kf *LkkFile) AppendFile(fpath string, data []byte) error 1453 ``` 1454 AppendFile 插入文件内容. 1455 1456 #### func (*LkkFile) Basename 1457 1458 ```go 1459 func (kf *LkkFile) Basename(fpath string) string 1460 ``` 1461 Basename 返回路径中的文件名部分(包括后缀),空路径时返回".". 1462 1463 #### func (*LkkFile) ChmodBatch 1464 1465 ```go 1466 func (kf *LkkFile) ChmodBatch(fpath string, filemode, dirmode os.FileMode) (res bool) 1467 ``` 1468 ChmodBatch 批量改变路径权限模式(包括子目录和所属文件). filemode为文件权限模式,dirmode为目录权限模式. 1469 1470 #### func (*LkkFile) CopyDir 1471 1472 ```go 1473 func (kf *LkkFile) CopyDir(source string, dest string, cover LkkFileCover) (int64, error) 1474 ``` 1475 CopyDir 拷贝源目录到目标目录,cover为枚举(FILE_COVER_ALLOW、FILE_COVER_IGNORE、FILE_COVER_DENY). 1476 1477 #### func (*LkkFile) CopyFile 1478 1479 ```go 1480 func (kf *LkkFile) CopyFile(source string, dest string, cover LkkFileCover) (int64, error) 1481 ``` 1482 CopyFile 1483 拷贝源文件到目标文件,cover为枚举(FILE_COVER_ALLOW、FILE_COVER_IGNORE、FILE_COVER_DENY). 1484 1485 #### func (*LkkFile) CopyLink 1486 1487 ```go 1488 func (kf *LkkFile) CopyLink(source string, dest string) error 1489 ``` 1490 CopyLink 拷贝链接. 1491 1492 #### func (*LkkFile) CountLines 1493 1494 ```go 1495 func (kf *LkkFile) CountLines(fpath string, buffLength int) (int, error) 1496 ``` 1497 CountLines 统计文件行数.buffLength为缓冲长度,kb. 1498 1499 #### func (*LkkFile) DelDir 1500 1501 ```go 1502 func (kf *LkkFile) DelDir(dir string, delete bool) error 1503 ``` 1504 DelDir 删除目录.delete为true时连该目录一起删除;为false时只清空该目录. 1505 1506 #### func (*LkkFile) DirSize 1507 1508 ```go 1509 func (kf *LkkFile) DirSize(fpath string) int64 1510 ``` 1511 DirSize 获取目录大小(bytes字节). 1512 1513 #### func (*LkkFile) Dirname 1514 1515 ```go 1516 func (kf *LkkFile) Dirname(fpath string) string 1517 ``` 1518 Dirname 返回路径中的目录部分,注意空路径或无目录的返回".". 1519 1520 #### func (*LkkFile) FastCopy 1521 1522 ```go 1523 func (kf *LkkFile) FastCopy(source string, dest string) (int64, error) 1524 ``` 1525 FastCopy 快速拷贝源文件到目标文件,不做安全检查. 1526 1527 #### func (*LkkFile) FileSize 1528 1529 ```go 1530 func (kf *LkkFile) FileSize(fpath string) int64 1531 ``` 1532 FileSize 获取文件大小(bytes字节);注意:文件不存在或无法访问时返回-1 . 1533 1534 #### func (*LkkFile) FileTree 1535 1536 ```go 1537 func (kf *LkkFile) FileTree(fpath string, ftype LkkFileTree, recursive bool, filters ...FileFilter) []string 1538 ``` 1539 FileTree 获取目录的文件树列表. ftype为枚举(FILE_TREE_ALL、FILE_TREE_DIR、FILE_TREE_FILE); 1540 recursive为是否递归; filters为一个或多个文件过滤器函数,FileFilter类型. 1541 1542 #### func (*LkkFile) FormatDir 1543 1544 ```go 1545 func (kf *LkkFile) FormatDir(fpath string) string 1546 ``` 1547 FormatDir 格式化目录,将"\","//"替换为"/",且以"/"结尾. 1548 1549 #### func (*LkkFile) FormatPath 1550 1551 ```go 1552 func (kf *LkkFile) FormatPath(fpath string) string 1553 ``` 1554 FormatPath 格式化路径. 1555 1556 #### func (*LkkFile) GetExt 1557 1558 ```go 1559 func (kf *LkkFile) GetExt(fpath string) string 1560 ``` 1561 GetExt 获取文件的小写扩展名,不包括点"." . 1562 1563 #### func (*LkkFile) GetFileMode 1564 1565 ```go 1566 func (kf *LkkFile) GetFileMode(fpath string) (os.FileMode, error) 1567 ``` 1568 GetFileMode 获取路径的权限模式. 1569 1570 #### func (*LkkFile) GetMime 1571 1572 ```go 1573 func (kf *LkkFile) GetMime(fpath string, fast bool) string 1574 ``` 1575 GetMime 获取文件mime类型;fast为true时根据后缀快速获取;为false时读取文件头获取. 1576 1577 #### func (*LkkFile) GetModTime 1578 1579 ```go 1580 func (kf *LkkFile) GetModTime(fpath string) (res int64) 1581 ``` 1582 GetModTime 获取文件的修改时间戳,秒. 1583 1584 #### func (*LkkFile) Glob 1585 1586 ```go 1587 func (kf *LkkFile) Glob(pattern string) ([]string, error) 1588 ``` 1589 Glob 寻找与模式匹配的文件路径. 1590 1591 #### func (*LkkFile) Img2Base64 1592 1593 ```go 1594 func (kf *LkkFile) Img2Base64(fpath string) (string, error) 1595 ``` 1596 Img2Base64 读取图片文件,并转换为base64字符串. 1597 1598 #### func (*LkkFile) IsBinary 1599 1600 ```go 1601 func (kf *LkkFile) IsBinary(fpath string) bool 1602 ``` 1603 IsBinary 是否二进制文件(且存在). 1604 1605 #### func (*LkkFile) IsDir 1606 1607 ```go 1608 func (kf *LkkFile) IsDir(fpath string) bool 1609 ``` 1610 IsDir 是否目录(且存在). 1611 1612 #### func (*LkkFile) IsExecutable 1613 1614 ```go 1615 func (kf *LkkFile) IsExecutable(fpath string) bool 1616 ``` 1617 IsExecutable 是否可执行文件. 1618 1619 #### func (*LkkFile) IsExist 1620 1621 ```go 1622 func (kf *LkkFile) IsExist(fpath string) bool 1623 ``` 1624 IsExist 路径(文件/目录)是否存在. 1625 1626 #### func (*LkkFile) IsFile 1627 1628 ```go 1629 func (kf *LkkFile) IsFile(fpath string, ftype ...LkkFileType) (res bool) 1630 ``` 1631 IsFile 是否(某类型)文件,且存在. 1632 ftype为枚举(FILE_TYPE_ANY、FILE_TYPE_LINK、FILE_TYPE_REGULAR、FILE_TYPE_COMMON),默认FILE_TYPE_ANY; 1633 1634 #### func (*LkkFile) IsImg 1635 1636 ```go 1637 func (kf *LkkFile) IsImg(fpath string) bool 1638 ``` 1639 IsImg 是否图片文件(仅检查后缀). 1640 1641 #### func (*LkkFile) IsLink 1642 1643 ```go 1644 func (kf *LkkFile) IsLink(fpath string) bool 1645 ``` 1646 IsLink 是否链接文件(软链接,且存在). 1647 1648 #### func (*LkkFile) IsReadable 1649 1650 ```go 1651 func (kf *LkkFile) IsReadable(fpath string) bool 1652 ``` 1653 IsReadable 路径是否可读. 1654 1655 #### func (*LkkFile) IsWritable 1656 1657 ```go 1658 func (kf *LkkFile) IsWritable(fpath string) bool 1659 ``` 1660 IsWritable 路径是否可写. 1661 1662 #### func (*LkkFile) IsZip 1663 1664 ```go 1665 func (kf *LkkFile) IsZip(fpath string) bool 1666 ``` 1667 IsZip 是否zip文件. 1668 1669 #### func (*LkkFile) Md5 1670 1671 ```go 1672 func (kf *LkkFile) Md5(fpath string, length uint8) (string, error) 1673 ``` 1674 Md5 获取文件md5值,length指定结果长度32/16. 1675 1676 #### func (*LkkFile) Mkdir 1677 1678 ```go 1679 func (kf *LkkFile) Mkdir(fpath string, mode os.FileMode) error 1680 ``` 1681 Mkdir 创建目录,允许多级. 1682 1683 #### func (*LkkFile) Pathinfo 1684 1685 ```go 1686 func (kf *LkkFile) Pathinfo(fpath string, option int) map[string]string 1687 ``` 1688 Pathinfo 获取文件路径的信息. option为要返回的信息,枚举值如下: -1: all; 1: dirname; 2: basename; 4: 1689 extension; 8: filename; 若要查看某几项,则为它们之间的和. 1690 1691 #### func (*LkkFile) ReadFile 1692 1693 ```go 1694 func (kf *LkkFile) ReadFile(fpath string) ([]byte, error) 1695 ``` 1696 ReadFile 读取文件内容. 1697 1698 #### func (*LkkFile) ReadFirstLine 1699 1700 ```go 1701 func (kf *LkkFile) ReadFirstLine(fpath string) []byte 1702 ``` 1703 ReadFirstLine 读取文件首行. 1704 1705 #### func (*LkkFile) ReadInArray 1706 1707 ```go 1708 func (kf *LkkFile) ReadInArray(fpath string) ([]string, error) 1709 ``` 1710 ReadInArray 把整个文件读入一个数组中,每行作为一个元素. 1711 1712 #### func (*LkkFile) ReadLastLine 1713 1714 ```go 1715 func (kf *LkkFile) ReadLastLine(fpath string) []byte 1716 ``` 1717 ReadLastLine 读取文件末行. 1718 1719 #### func (*LkkFile) RealPath 1720 1721 ```go 1722 func (kf *LkkFile) RealPath(fpath string) string 1723 ``` 1724 RealPath 返回规范化的真实绝对路径名.path必须存在,若路径不存在则返回空字符串. 1725 1726 #### func (*LkkFile) Rename 1727 1728 ```go 1729 func (kf *LkkFile) Rename(oldname, newname string) error 1730 ``` 1731 Rename 重命名(或移动)文件/目录. 1732 1733 #### func (*LkkFile) SafeFileName 1734 1735 ```go 1736 func (kf *LkkFile) SafeFileName(str string) string 1737 ``` 1738 SafeFileName 将文件名转换为安全可用的字符串. 1739 1740 #### func (*LkkFile) ShaX 1741 1742 ```go 1743 func (kf *LkkFile) ShaX(fpath string, x uint16) (string, error) 1744 ``` 1745 ShaX 计算文件的 shaX 散列值,x为1/256/512. 1746 1747 #### func (*LkkFile) TarGz 1748 1749 ```go 1750 func (kf *LkkFile) TarGz(src string, dstTar string, ignorePatterns ...string) (bool, error) 1751 ``` 1752 TarGz 打包压缩tar.gz. src为源文件或目录,dstTar为打包的路径名,ignorePatterns为要忽略的文件正则. 1753 1754 #### func (*LkkFile) Touch 1755 1756 ```go 1757 func (kf *LkkFile) Touch(fpath string, size int64) bool 1758 ``` 1759 Touch 快速创建指定大小的文件,size为字节. 1760 1761 #### func (*LkkFile) UnTarGz 1762 1763 ```go 1764 func (kf *LkkFile) UnTarGz(srcTar, dstDir string) (bool, error) 1765 ``` 1766 UnTarGz 将tar.gz文件解压缩. srcTar为压缩包,dstDir为解压目录. 1767 1768 #### func (*LkkFile) UnZip 1769 1770 ```go 1771 func (kf *LkkFile) UnZip(srcZip, dstDir string) (bool, error) 1772 ``` 1773 UnZip 解压zip文件.srcZip为zip文件路径,dstDir为解压目录. 1774 1775 #### func (*LkkFile) Unlink 1776 1777 ```go 1778 func (kf *LkkFile) Unlink(fpath string) error 1779 ``` 1780 Unlink 删除文件. 1781 1782 #### func (*LkkFile) WriteFile 1783 1784 ```go 1785 func (kf *LkkFile) WriteFile(fpath string, data []byte, perm ...os.FileMode) error 1786 ``` 1787 WriteFile 将内容写入文件. fpath为文件路径;data为内容;perm为权限,默认为0655. 1788 1789 #### func (*LkkFile) Zip 1790 1791 ```go 1792 func (kf *LkkFile) Zip(dst string, fpaths ...string) (bool, error) 1793 ``` 1794 Zip 将文件或目录进行zip打包.fpaths为源文件或目录的路径. 1795 1796 #### type LkkFileCover 1797 1798 ```go 1799 type LkkFileCover int8 1800 ``` 1801 1802 LkkFileCover 枚举类型,文件是否覆盖 1803 1804 #### type LkkFileTree 1805 1806 ```go 1807 type LkkFileTree uint8 1808 ``` 1809 1810 LkkFileTree 枚举类型,文件树查找类型 1811 1812 #### type LkkFileType 1813 1814 ```go 1815 type LkkFileType uint8 1816 ``` 1817 1818 LkkFileType 枚举类型,文件类型 1819 1820 #### type LkkNumber 1821 1822 ```go 1823 type LkkNumber struct { 1824 } 1825 ``` 1826 1827 LkkNumber is the receiver of number utilities 1828 1829 #### func (*LkkNumber) AbsFloat 1830 1831 ```go 1832 func (kn *LkkNumber) AbsFloat(number float64) float64 1833 ``` 1834 AbsFloat 浮点型取绝对值. 1835 1836 #### func (*LkkNumber) AbsInt 1837 1838 ```go 1839 func (kn *LkkNumber) AbsInt(number int64) int64 1840 ``` 1841 AbsInt 整型取绝对值. 1842 1843 #### func (*LkkNumber) Average 1844 1845 ```go 1846 func (kn *LkkNumber) Average(nums ...interface{}) (res float64) 1847 ``` 1848 Average 对任意类型序列中的数值类型求平均值,忽略非数值的. 1849 1850 #### func (*LkkNumber) AverageFloat64 1851 1852 ```go 1853 func (kn *LkkNumber) AverageFloat64(nums ...float64) (res float64) 1854 ``` 1855 AverageFloat64 对浮点数序列求平均值. 1856 1857 #### func (*LkkNumber) AverageInt 1858 1859 ```go 1860 func (kn *LkkNumber) AverageInt(nums ...int) (res float64) 1861 ``` 1862 AverageInt 对整数序列求平均值. 1863 1864 #### func (*LkkNumber) ByteFormat 1865 1866 ```go 1867 func (kn *LkkNumber) ByteFormat(size float64, decimal uint8, delimiter string) string 1868 ``` 1869 ByteFormat 格式化文件比特大小. size为文件大小,decimal为要保留的小数位数,delimiter为数字和单位间的分隔符. 1870 1871 #### func (*LkkNumber) Ceil 1872 1873 ```go 1874 func (kn *LkkNumber) Ceil(value float64) float64 1875 ``` 1876 Ceil 向上取整. 1877 1878 #### func (*LkkNumber) Exp 1879 1880 ```go 1881 func (kn *LkkNumber) Exp(x float64) float64 1882 ``` 1883 Exp 计算 e 的指数. 1884 1885 #### func (*LkkNumber) Expm1 1886 1887 ```go 1888 func (kn *LkkNumber) Expm1(x float64) float64 1889 ``` 1890 Expm1 返回 exp(x) - 1. 1891 1892 #### func (*LkkNumber) FloatEqual 1893 1894 ```go 1895 func (kn *LkkNumber) FloatEqual(f1 float64, f2 float64, decimal ...uint8) (res bool) 1896 ``` 1897 FloatEqual 比较两个浮点数是否相等.decimal为小数精确位数,默认为 FLOAT_DECIMAL . 1898 有效数值是长度(包括小数点)为17位之内的数值,最后一位会四舍五入. 1899 1900 #### func (*LkkNumber) Floor 1901 1902 ```go 1903 func (kn *LkkNumber) Floor(value float64) float64 1904 ``` 1905 Floor 向下取整. 1906 1907 #### func (*LkkNumber) GeoDistance 1908 1909 ```go 1910 func (kn *LkkNumber) GeoDistance(lng1, lat1, lng2, lat2 float64) float64 1911 ``` 1912 GeoDistance 获取地理距离/米. 参数分别为两点的经度和纬度:lat:-90~90,lng:-180~180. 1913 1914 #### func (*LkkNumber) InRange 1915 1916 ```go 1917 func (kn *LkkNumber) InRange(value interface{}, left interface{}, right interface{}) bool 1918 ``` 1919 InRange 数值是否在某个范围内,将自动转换类型再比较. 1920 1921 #### func (*LkkNumber) InRangeFloat32 1922 1923 ```go 1924 func (kn *LkkNumber) InRangeFloat32(value, left, right float32) bool 1925 ``` 1926 InRangeFloat32 数值是否在2个32位浮点数范围内. 1927 1928 #### func (*LkkNumber) InRangeFloat64 1929 1930 ```go 1931 func (kn *LkkNumber) InRangeFloat64(value, left, right float64) bool 1932 ``` 1933 InRangeFloat64 数值是否在2个64位浮点数范围内. 1934 1935 #### func (*LkkNumber) InRangeInt 1936 1937 ```go 1938 func (kn *LkkNumber) InRangeInt(value, left, right int) bool 1939 ``` 1940 InRangeInt 数值是否在2个整数范围内. 1941 1942 #### func (*LkkNumber) IsEven 1943 1944 ```go 1945 func (kn *LkkNumber) IsEven(val int) bool 1946 ``` 1947 IsEven 变量是否偶数. 1948 1949 #### func (*LkkNumber) IsNan 1950 1951 ```go 1952 func (kn *LkkNumber) IsNan(val interface{}) bool 1953 ``` 1954 IsNan 是否为“非数值”.注意,这里复数也算“非数值”. 1955 1956 #### func (*LkkNumber) IsNatural 1957 1958 ```go 1959 func (kn *LkkNumber) IsNatural(value float64) bool 1960 ``` 1961 IsNatural 数值是否为自然数(包括0). 1962 1963 #### func (*LkkNumber) IsNaturalRange 1964 1965 ```go 1966 func (kn *LkkNumber) IsNaturalRange(arr []int, strict bool) (res bool) 1967 ``` 1968 IsNaturalRange 是否连续的自然数数组/切片,如[0,1,2,3...],其中不能有间断. strict为是否严格检查元素的顺序. 1969 1970 #### func (*LkkNumber) IsNegative 1971 1972 ```go 1973 func (kn *LkkNumber) IsNegative(value float64) bool 1974 ``` 1975 IsNegative 数值是否为负数. 1976 1977 #### func (*LkkNumber) IsNonNegative 1978 1979 ```go 1980 func (kn *LkkNumber) IsNonNegative(value float64) bool 1981 ``` 1982 IsNonNegative 数值是否为非负数. 1983 1984 #### func (*LkkNumber) IsNonPositive 1985 1986 ```go 1987 func (kn *LkkNumber) IsNonPositive(value float64) bool 1988 ``` 1989 IsNonPositive 数值是否为非正数. 1990 1991 #### func (*LkkNumber) IsOdd 1992 1993 ```go 1994 func (kn *LkkNumber) IsOdd(val int) bool 1995 ``` 1996 IsOdd 变量是否奇数. 1997 1998 #### func (*LkkNumber) IsPositive 1999 2000 ```go 2001 func (kn *LkkNumber) IsPositive(value float64) bool 2002 ``` 2003 IsPositive 数值是否为正数. 2004 2005 #### func (*LkkNumber) IsWhole 2006 2007 ```go 2008 func (kn *LkkNumber) IsWhole(value float64) bool 2009 ``` 2010 IsWhole 数值是否为整数. 2011 2012 #### func (*LkkNumber) Log 2013 2014 ```go 2015 func (kn *LkkNumber) Log(x, y float64) float64 2016 ``` 2017 Log 对数表达式,求以y为底x的对数. 2018 2019 #### func (*LkkNumber) Max 2020 2021 ```go 2022 func (kn *LkkNumber) Max(nums ...interface{}) (res float64) 2023 ``` 2024 Max 取出任意类型中数值类型的最大值,无数值类型则为0. 2025 2026 #### func (*LkkNumber) MaxFloat64 2027 2028 ```go 2029 func (kn *LkkNumber) MaxFloat64(nums ...float64) (res float64) 2030 ``` 2031 MaxFloat64 64位浮点数序列求最大值. 2032 2033 #### func (*LkkNumber) MaxInt 2034 2035 ```go 2036 func (kn *LkkNumber) MaxInt(nums ...int) (res int) 2037 ``` 2038 MaxInt 整数序列求最大值. 2039 2040 #### func (*LkkNumber) Min 2041 2042 ```go 2043 func (kn *LkkNumber) Min(nums ...interface{}) (res float64) 2044 ``` 2045 Min 取出任意类型中数值类型的最小值,无数值类型则为0. 2046 2047 #### func (*LkkNumber) MinFloat64 2048 2049 ```go 2050 func (kn *LkkNumber) MinFloat64(nums ...float64) (res float64) 2051 ``` 2052 MinFloat64 64位浮点数序列求最小值. 2053 2054 #### func (*LkkNumber) MinInt 2055 2056 ```go 2057 func (kn *LkkNumber) MinInt(nums ...int) (res int) 2058 ``` 2059 MinInt 整数序列求最小值. 2060 2061 #### func (*LkkNumber) NearLogarithm 2062 2063 ```go 2064 func (kn *LkkNumber) NearLogarithm(num, base int, left bool) int 2065 ``` 2066 NearLogarithm 求以 base 为底 num 的对数临近值. num为自然数,base为正整数,left是否向左取整. 2067 2068 #### func (*LkkNumber) NumSign 2069 2070 ```go 2071 func (kn *LkkNumber) NumSign(value float64) (res int8) 2072 ``` 2073 NumSign 返回数值的符号.值>0为1,<0为-1,其他为0. 2074 2075 #### func (*LkkNumber) NumberFormat 2076 2077 ```go 2078 func (kn *LkkNumber) NumberFormat(number float64, decimal uint8, point, thousand string) string 2079 ``` 2080 NumberFormat 以千位分隔符方式格式化一个数字. 2081 decimal为要保留的小数位数,point为小数点显示的字符,thousand为千位分隔符显示的字符. 2082 有效数值是长度(包括小数点)为17位之内的数值,最后一位会四舍五入. 2083 2084 #### func (*LkkNumber) Percent 2085 2086 ```go 2087 func (kn *LkkNumber) Percent(val, total interface{}) float64 2088 ``` 2089 Percent 返回百分比((val/total) *100). 2090 2091 #### func (*LkkNumber) Pow 2092 2093 ```go 2094 func (kn *LkkNumber) Pow(x, y float64) float64 2095 ``` 2096 Pow 指数表达式,求x的y次方. 2097 2098 #### func (*LkkNumber) Rand 2099 2100 ```go 2101 func (kn *LkkNumber) Rand(min, max int) int 2102 ``` 2103 Rand RandInt的别名. 2104 2105 #### func (*LkkNumber) RandFloat64 2106 2107 ```go 2108 func (kn *LkkNumber) RandFloat64(min, max float64) float64 2109 ``` 2110 RandFloat64 生成一个min~max范围内的随机float64浮点数. 2111 2112 #### func (*LkkNumber) RandInt 2113 2114 ```go 2115 func (kn *LkkNumber) RandInt(min, max int) int 2116 ``` 2117 RandInt 生成一个min~max范围内的随机int整数. 2118 2119 #### func (*LkkNumber) RandInt64 2120 2121 ```go 2122 func (kn *LkkNumber) RandInt64(min, max int64) int64 2123 ``` 2124 RandInt64 生成一个min~max范围内的随机int64整数. 2125 2126 #### func (*LkkNumber) Range 2127 2128 ```go 2129 func (kn *LkkNumber) Range(start, end int) []int 2130 ``` 2131 Range 根据范围创建数组,包含指定的元素. 2132 start为起始元素值,end为末尾元素值.若start<end,返回升序的数组;若start>end,返回降序的数组. 2133 2134 #### func (*LkkNumber) Round 2135 2136 ```go 2137 func (kn *LkkNumber) Round(value float64) float64 2138 ``` 2139 Round 对浮点数(的整数)进行四舍五入. 2140 2141 #### func (*LkkNumber) RoundPlus 2142 2143 ```go 2144 func (kn *LkkNumber) RoundPlus(value float64, precision uint8) float64 2145 ``` 2146 RoundPlus 对指定的小数位进行四舍五入. precision为小数位数. 2147 2148 #### func (*LkkNumber) SplitNaturalNum 2149 2150 ```go 2151 func (kn *LkkNumber) SplitNaturalNum(num, base int) []int 2152 ``` 2153 SplitNaturalNum 将自然数 num 按底数 base 进行拆解. 2154 2155 #### func (*LkkNumber) Sum 2156 2157 ```go 2158 func (kn *LkkNumber) Sum(nums ...interface{}) (res float64) 2159 ``` 2160 Sum 对任意类型序列中的数值类型求和,忽略非数值的. 2161 2162 #### func (*LkkNumber) SumFloat64 2163 2164 ```go 2165 func (kn *LkkNumber) SumFloat64(nums ...float64) float64 2166 ``` 2167 SumFloat64 浮点数求和. 2168 2169 #### func (*LkkNumber) SumInt 2170 2171 ```go 2172 func (kn *LkkNumber) SumInt(nums ...int) int 2173 ``` 2174 SumInt 整数求和. 2175 2176 #### type LkkOS 2177 2178 ```go 2179 type LkkOS struct { 2180 } 2181 ``` 2182 2183 LkkOS is the receiver of OS utilities 2184 2185 #### func (*LkkOS) Chdir 2186 2187 ```go 2188 func (ko *LkkOS) Chdir(dir string) error 2189 ``` 2190 Chdir 改变/进入新的工作目录. 2191 2192 #### func (*LkkOS) Chmod 2193 2194 ```go 2195 func (ko *LkkOS) Chmod(filename string, mode os.FileMode) bool 2196 ``` 2197 Chmod 改变文件模式. 2198 2199 #### func (*LkkOS) Chown 2200 2201 ```go 2202 func (ko *LkkOS) Chown(filename string, uid, gid int) bool 2203 ``` 2204 Chown 改变文件的所有者. 2205 2206 #### func (*LkkOS) ClientIp 2207 2208 ```go 2209 func (ko *LkkOS) ClientIp(req *http.Request) string 2210 ``` 2211 ClientIp 获取客户端真实IP,req为http请求. 2212 2213 #### func (*LkkOS) CpuUsage 2214 2215 ```go 2216 func (ko *LkkOS) CpuUsage() (user, idle, total uint64) 2217 ``` 2218 CpuUsage 获取CPU使用率(darwin系统必须使用cgo),单位jiffies(节拍数). user为用户态(用户进程)的运行时间, 2219 idle为空闲时间, total为累计时间. 2220 2221 #### func (*LkkOS) DiskUsage 2222 2223 ```go 2224 func (ko *LkkOS) DiskUsage(path string) (used, free, total uint64) 2225 ``` 2226 DiskUsage 获取磁盘(目录)使用情况,单位字节.参数path为路径. used为已用, free为空闲, total为总数. 2227 2228 #### func (*LkkOS) Exec 2229 2230 ```go 2231 func (ko *LkkOS) Exec(command string) (retInt int, outStr, errStr []byte) 2232 ``` 2233 Exec 执行一个外部命令. retInt为1时失败,为0时成功;outStr为执行命令的输出;errStr为错误输出. 命令如 "ls -a" 2234 "/bin/bash -c \"ls -a\"" 2235 2236 #### func (*LkkOS) ForceGC 2237 2238 ```go 2239 func (ko *LkkOS) ForceGC() 2240 ``` 2241 ForceGC 强制手动GC垃圾回收(阻塞). 2242 2243 #### func (*LkkOS) GetBiosInfo 2244 2245 ```go 2246 func (ko *LkkOS) GetBiosInfo() *BiosInfo 2247 ``` 2248 GetBiosInfo 获取BIOS信息. 注意:Mac机器没有BIOS信息,它使用EFI. 2249 2250 #### func (*LkkOS) GetBoardInfo 2251 2252 ```go 2253 func (ko *LkkOS) GetBoardInfo() *BoardInfo 2254 ``` 2255 GetBoardInfo 获取Board信息. 2256 2257 #### func (*LkkOS) GetCpuInfo 2258 2259 ```go 2260 func (ko *LkkOS) GetCpuInfo() *CpuInfo 2261 ``` 2262 GetCpuInfo 获取CPU信息. 2263 2264 #### func (*LkkOS) GetEndian 2265 2266 ```go 2267 func (ko *LkkOS) GetEndian() binary.ByteOrder 2268 ``` 2269 GetEndian 获取系统字节序类型,小端返回binary.LittleEndian,大端返回binary.BigEndian . 2270 2271 #### func (*LkkOS) GetHostByIp 2272 2273 ```go 2274 func (ko *LkkOS) GetHostByIp(ipAddress string) (string, error) 2275 ``` 2276 GetHostByIp 获取指定的IP地址对应的主机名. 2277 2278 #### func (*LkkOS) GetIPs 2279 2280 ```go 2281 func (ko *LkkOS) GetIPs() (ips []string) 2282 ``` 2283 GetIPs 获取本机的IP列表. 2284 2285 #### func (*LkkOS) GetIpByHostname 2286 2287 ```go 2288 func (ko *LkkOS) GetIpByHostname(hostname string) (string, error) 2289 ``` 2290 GetIpByHostname 返回主机名对应的 IPv4地址. 2291 2292 #### func (*LkkOS) GetIpsByDomain 2293 2294 ```go 2295 func (ko *LkkOS) GetIpsByDomain(domain string) ([]string, error) 2296 ``` 2297 GetIpsByHost 获取互联网域名/主机名对应的 IPv4 地址列表. 2298 2299 #### func (*LkkOS) GetMacAddrs 2300 2301 ```go 2302 func (ko *LkkOS) GetMacAddrs() (macAddrs []string) 2303 ``` 2304 GetMacAddrs 获取本机的Mac网卡地址列表. 2305 2306 #### func (*LkkOS) GetPidByPort 2307 2308 ```go 2309 func (ko *LkkOS) GetPidByPort(port int) (pid int) 2310 ``` 2311 GetPidByPort 根据端口号获取监听的进程PID. linux可能要求root权限; darwin依赖lsof; windows依赖netstat. 2312 2313 #### func (*LkkOS) GetProcessExecPath 2314 2315 ```go 2316 func (ko *LkkOS) GetProcessExecPath(pid int) string 2317 ``` 2318 GetProcessExecPath 根据PID获取进程的执行路径. 2319 2320 #### func (*LkkOS) GetSystemInfo 2321 2322 ```go 2323 func (ko *LkkOS) GetSystemInfo() *SystemInfo 2324 ``` 2325 GetSystemInfo 获取系统运行信息. 2326 2327 #### func (*LkkOS) GetTempDir 2328 2329 ```go 2330 func (ko *LkkOS) GetTempDir() string 2331 ``` 2332 GetTempDir 返回用于临时文件的目录. 2333 2334 #### func (*LkkOS) Getcwd 2335 2336 ```go 2337 func (ko *LkkOS) Getcwd() (string, error) 2338 ``` 2339 Getcwd 取得当前工作目录(程序可能在任务中进行多次目录切换). 2340 2341 #### func (*LkkOS) Getenv 2342 2343 ```go 2344 func (ko *LkkOS) Getenv(varname string, defvalue ...string) string 2345 ``` 2346 Getenv 获取一个环境变量的值.defvalue为默认值. 2347 2348 #### func (*LkkOS) GoMemory 2349 2350 ```go 2351 func (ko *LkkOS) GoMemory() uint64 2352 ``` 2353 MemoryGetUsage 获取当前go程序的内存使用,返回字节数. 2354 2355 #### func (*LkkOS) HomeDir 2356 2357 ```go 2358 func (ko *LkkOS) HomeDir() (string, error) 2359 ``` 2360 HomeDir 获取当前用户的主目录. 2361 2362 #### func (*LkkOS) Hostname 2363 2364 ```go 2365 func (ko *LkkOS) Hostname() (string, error) 2366 ``` 2367 Hostname 获取主机名. 2368 2369 #### func (*LkkOS) IsLinux 2370 2371 ```go 2372 func (ko *LkkOS) IsLinux() bool 2373 ``` 2374 IsLinux 当前操作系统是否Linux. 2375 2376 #### func (*LkkOS) IsLittleEndian 2377 2378 ```go 2379 func (ko *LkkOS) IsLittleEndian() bool 2380 ``` 2381 IsLittleEndian 系统字节序类型是否小端存储. 2382 2383 #### func (*LkkOS) IsMac 2384 2385 ```go 2386 func (ko *LkkOS) IsMac() bool 2387 ``` 2388 IsMac 当前操作系统是否Mac OS/X. 2389 2390 #### func (*LkkOS) IsPortOpen 2391 2392 ```go 2393 func (ko *LkkOS) IsPortOpen(host string, port interface{}, protocols ...string) bool 2394 ``` 2395 IsPortOpen 检查主机端口是否开放. host为主机名;port为(整型/字符串)端口号;protocols为协议名称,可选,默认tcp. 2396 2397 #### func (*LkkOS) IsPrivateIp 2398 2399 ```go 2400 func (ko *LkkOS) IsPrivateIp(str string) (bool, error) 2401 ``` 2402 IsPrivateIp 是否私有IP地址(ipv4/ipv6). 2403 2404 #### func (*LkkOS) IsProcessExists 2405 2406 ```go 2407 func (ko *LkkOS) IsProcessExists(pid int) (res bool) 2408 ``` 2409 IsProcessExists 进程是否存在. 2410 2411 #### func (*LkkOS) IsPublicIP 2412 2413 ```go 2414 func (ko *LkkOS) IsPublicIP(str string) (bool, error) 2415 ``` 2416 IsPublicIP 是否公网IPv4. 2417 2418 #### func (*LkkOS) IsWindows 2419 2420 ```go 2421 func (ko *LkkOS) IsWindows() bool 2422 ``` 2423 IsWindows 当前操作系统是否Windows. 2424 2425 #### func (*LkkOS) LocalIP 2426 2427 ```go 2428 func (ko *LkkOS) LocalIP() (string, error) 2429 ``` 2430 LocalIP 获取本机第一个NIC's IP. 2431 2432 #### func (*LkkOS) MemoryUsage 2433 2434 ```go 2435 func (ko *LkkOS) MemoryUsage(virtual bool) (used, free, total uint64) 2436 ``` 2437 MemoryUsage 获取内存使用率,单位字节. 参数 virtual(仅支持linux),是否取虚拟内存. used为已用, free为空闲, 2438 total为总数. 2439 2440 #### func (*LkkOS) OutboundIP 2441 2442 ```go 2443 func (ko *LkkOS) OutboundIP() (string, error) 2444 ``` 2445 OutboundIP 获取本机的出口IP. 2446 2447 #### func (*LkkOS) PrivateCIDR 2448 2449 ```go 2450 func (ko *LkkOS) PrivateCIDR() []*net.IPNet 2451 ``` 2452 PrivateCIDR 获取私有网段的CIDR(无类别域间路由). 2453 2454 #### func (*LkkOS) Pwd 2455 2456 ```go 2457 func (ko *LkkOS) Pwd() string 2458 ``` 2459 Pwd 获取当前程序运行所在的路径,注意和Getwd有所不同. 若当前执行的是链接文件,则会指向真实二进制程序的所在目录. 2460 2461 #### func (*LkkOS) Setenv 2462 2463 ```go 2464 func (ko *LkkOS) Setenv(varname, data string) error 2465 ``` 2466 Setenv 设置一个环境变量的值. 2467 2468 #### func (*LkkOS) System 2469 2470 ```go 2471 func (ko *LkkOS) System(command string) (retInt int, outStr, errStr []byte) 2472 ``` 2473 System 与Exec相同,但会同时打印标准输出和标准错误. 2474 2475 #### func (*LkkOS) TriggerGC 2476 2477 ```go 2478 func (ko *LkkOS) TriggerGC() 2479 ``` 2480 TriggerGC 触发GC(非阻塞). 2481 2482 #### func (*LkkOS) Unsetenv 2483 2484 ```go 2485 func (ko *LkkOS) Unsetenv(varname string) error 2486 ``` 2487 Unsetenv 删除一个环境变量. 2488 2489 #### func (*LkkOS) Uptime 2490 2491 ```go 2492 func (ko *LkkOS) Uptime() (uint64, error) 2493 ``` 2494 Uptime 获取系统运行时间,秒. 2495 2496 #### type LkkPKCSType 2497 2498 ```go 2499 type LkkPKCSType int8 2500 ``` 2501 2502 LkkPKCSType 枚举类型,PKCS填充类型 2503 2504 #### type LkkPadType 2505 2506 ```go 2507 type LkkPadType uint8 2508 ``` 2509 2510 LkkPadType 枚举类型,字符串填充类型 2511 2512 #### type LkkRandString 2513 2514 ```go 2515 type LkkRandString uint8 2516 ``` 2517 2518 LkkRandString 枚举类型,随机字符串类型 2519 2520 #### type LkkString 2521 2522 ```go 2523 type LkkString struct { 2524 } 2525 ``` 2526 2527 LkkString is the receiver of string utilities 2528 2529 #### func (*LkkString) Addslashes 2530 2531 ```go 2532 func (ks *LkkString) Addslashes(str string) string 2533 ``` 2534 Addslashes 使用反斜线引用字符串. 2535 2536 #### func (*LkkString) AtWho 2537 2538 ```go 2539 func (ks *LkkString) AtWho(text string, minLen ...int) []string 2540 ``` 2541 AtWho 查找被@的用户名.minLen为用户名最小长度,默认5. 2542 2543 #### func (*LkkString) Big5ToUtf8 2544 2545 ```go 2546 func (ks *LkkString) Big5ToUtf8(s []byte) ([]byte, error) 2547 ``` 2548 Big5ToUtf8 BIG5转UTF-8编码. 2549 2550 #### func (*LkkString) Br2nl 2551 2552 ```go 2553 func (ks *LkkString) Br2nl(str string) string 2554 ``` 2555 Br2nl 将br标签转换为换行符. 2556 2557 #### func (*LkkString) Chr 2558 2559 ```go 2560 func (ks *LkkString) Chr(chr uint) string 2561 ``` 2562 Chr 返回相对应于 ASCII 所指定的单个字符. 2563 2564 #### func (*LkkString) ChunkSplit 2565 2566 ```go 2567 func (ks *LkkString) ChunkSplit(str string, chunklen uint, end string) string 2568 ``` 2569 ChunkSplit 将字符串分割成小块.str为要分割的字符,chunklen为分割的尺寸,end为行尾序列符号. 2570 2571 #### func (*LkkString) ClearUrlPrefix 2572 2573 ```go 2574 func (ks *LkkString) ClearUrlPrefix(str string, prefix ...string) string 2575 ``` 2576 ClearUrlPrefix 清除URL的前缀; str为URL字符串,prefix为前缀,默认"/". 2577 2578 #### func (*LkkString) ClearUrlSuffix 2579 2580 ```go 2581 func (ks *LkkString) ClearUrlSuffix(str string, suffix ...string) string 2582 ``` 2583 ClearUrlSuffix 清除URL的后缀; str为URL字符串,suffix为后缀,默认"/". 2584 2585 #### func (*LkkString) ClosestWord 2586 2587 ```go 2588 func (ks *LkkString) ClosestWord(word string, searchs []string) (string, int) 2589 ``` 2590 ClosestWord 获取与原字符串相似度最高的字符串,以及它们的编辑距离. word为原字符串,searchs为待查找的字符串数组. 2591 2592 #### func (*LkkString) CountBase64Byte 2593 2594 ```go 2595 func (ks *LkkString) CountBase64Byte(str string) (res int) 2596 ``` 2597 CountBase64Byte 粗略统计base64字符串大小,字节. 2598 2599 #### func (*LkkString) CountWords 2600 2601 ```go 2602 func (ks *LkkString) CountWords(str string) (int, map[string]int) 2603 ``` 2604 CountWords 统计字符串中单词的使用情况. 返回结果:单词总数;和一个字典,包含每个单词的单独统计. 因为没有分词,对中文尚未很好支持. 2605 2606 #### func (*LkkString) Crc32 2607 2608 ```go 2609 func (ks *LkkString) Crc32(str string) uint32 2610 ``` 2611 Crc32 计算一个字符串的 crc32 多项式. 2612 2613 #### func (*LkkString) DBC2SBC 2614 2615 ```go 2616 func (ks *LkkString) DBC2SBC(s string) string 2617 ``` 2618 DBC2SBC 半角转全角. 2619 2620 #### func (*LkkString) DetectEncoding 2621 2622 ```go 2623 func (ks *LkkString) DetectEncoding(str string) (res string) 2624 ``` 2625 DetectEncoding 匹配字符编码,TODO. 2626 2627 #### func (*LkkString) Dstrpos 2628 2629 ```go 2630 func (ks *LkkString) Dstrpos(str string, arr []string, chkCase bool) (bool, string) 2631 ``` 2632 Dstrpos 检查字符串str是否包含数组arr的元素之一,返回检查结果和匹配的字符串. chkCase为是否检查大小写. 2633 2634 #### func (*LkkString) EndsWith 2635 2636 ```go 2637 func (ks *LkkString) EndsWith(str, sub string, ignoreCase bool) bool 2638 ``` 2639 EndsWith 字符串str是否以sub结尾. 2640 2641 #### func (*LkkString) EndsWiths 2642 2643 ```go 2644 func (ks *LkkString) EndsWiths(str string, subs []string, ignoreCase bool) (res bool) 2645 ``` 2646 EndsWiths 字符串str是否以subs其中之一为结尾. 2647 2648 #### func (*LkkString) Explode 2649 2650 ```go 2651 func (ks *LkkString) Explode(str string, delimiters ...string) (res []string) 2652 ``` 2653 Explode 字符串分割.delimiters为分隔符,可选,支持多个. 2654 2655 #### func (*LkkString) FirstLetter 2656 2657 ```go 2658 func (ks *LkkString) FirstLetter(str string) string 2659 ``` 2660 FirstLetter 获取字符串首字母. 2661 2662 #### func (*LkkString) FormatUrl 2663 2664 ```go 2665 func (ks *LkkString) FormatUrl(str string) string 2666 ``` 2667 FormatUrl 格式化URL. 2668 2669 #### func (*LkkString) GbkToUtf8 2670 2671 ```go 2672 func (ks *LkkString) GbkToUtf8(s []byte) ([]byte, error) 2673 ``` 2674 GbkToUtf8 GBK转UTF-8编码. 2675 2676 #### func (*LkkString) GetDomain 2677 2678 ```go 2679 func (ks *LkkString) GetDomain(str string, isMain ...bool) string 2680 ``` 2681 GetDomain 从URL字符串中获取域名. 2682 可选参数isMain,默认为false,取完整域名;为true时,取主域名(如abc.test.com取test.com). 2683 2684 #### func (*LkkString) GetEquationValue 2685 2686 ```go 2687 func (ks *LkkString) GetEquationValue(str, name string) (res string) 2688 ``` 2689 GetEquationValue 获取等式str中变量name的值. 2690 2691 #### func (*LkkString) Gravatar 2692 2693 ```go 2694 func (ks *LkkString) Gravatar(email string, size uint16) string 2695 ``` 2696 Gravatar 获取Gravatar头像地址. email为邮箱;size为头像尺寸像素. 2697 2698 #### func (*LkkString) HasChinese 2699 2700 ```go 2701 func (ks *LkkString) HasChinese(str string) bool 2702 ``` 2703 HasChinese 字符串是否含有中文. 2704 2705 #### func (*LkkString) HasEmoji 2706 2707 ```go 2708 func (ks *LkkString) HasEmoji(str string) bool 2709 ``` 2710 HasEmoji 字符串是否含有表情符. 2711 2712 #### func (*LkkString) HasEnglish 2713 2714 ```go 2715 func (ks *LkkString) HasEnglish(str string) bool 2716 ``` 2717 HasEnglish 是否含有英文字符,HasLetter的别名. 2718 2719 #### func (*LkkString) HasFullWidth 2720 2721 ```go 2722 func (ks *LkkString) HasFullWidth(str string) bool 2723 ``` 2724 HasFullWidth 是否含有全角字符. 2725 2726 #### func (*LkkString) HasHalfWidth 2727 2728 ```go 2729 func (ks *LkkString) HasHalfWidth(str string) bool 2730 ``` 2731 HasHalfWidth 是否含有半角字符. 2732 2733 #### func (*LkkString) HasLetter 2734 2735 ```go 2736 func (ks *LkkString) HasLetter(str string) bool 2737 ``` 2738 HasLetter 字符串是否含有(英文)字母. 2739 2740 #### func (*LkkString) HasSpecialChar 2741 2742 ```go 2743 func (ks *LkkString) HasSpecialChar(str string) bool 2744 ``` 2745 HasSpecialChar 字符串是否含有特殊字符. 2746 2747 #### func (*LkkString) HasWhitespace 2748 2749 ```go 2750 func (ks *LkkString) HasWhitespace(str string) bool 2751 ``` 2752 HasWhitespace 是否带有空白字符. 2753 2754 #### func (*LkkString) HideCard 2755 2756 ```go 2757 func (ks *LkkString) HideCard(card string) string 2758 ``` 2759 HideCard 隐藏证件号码. 2760 2761 #### func (*LkkString) HideMobile 2762 2763 ```go 2764 func (ks *LkkString) HideMobile(mobile string) string 2765 ``` 2766 HideMobile 隐藏手机号. 2767 2768 #### func (*LkkString) HideTrueName 2769 2770 ```go 2771 func (ks *LkkString) HideTrueName(name string) string 2772 ``` 2773 HideTrueName 隐藏真实名称(如姓名、账号、公司等). 2774 2775 #### func (*LkkString) Html2Text 2776 2777 ```go 2778 func (ks *LkkString) Html2Text(str string) string 2779 ``` 2780 Html2Text 将html转换为纯文本. 2781 2782 #### func (*LkkString) Htmlentities 2783 2784 ```go 2785 func (ks *LkkString) Htmlentities(str string) string 2786 ``` 2787 Htmlentities 将字符转换为 HTML 转义字符. 2788 2789 #### func (*LkkString) HtmlentityDecode 2790 2791 ```go 2792 func (ks *LkkString) HtmlentityDecode(str string) string 2793 ``` 2794 HtmlentityDecode 将HTML实体转换为它们对应的字符. 2795 2796 #### func (*LkkString) HttpBuildQuery 2797 2798 ```go 2799 func (ks *LkkString) HttpBuildQuery(queryData url.Values) string 2800 ``` 2801 HttpBuildQuery 根据参数生成 URL-encode 之后的请求字符串. 2802 2803 #### func (*LkkString) Img2Base64 2804 2805 ```go 2806 func (ks *LkkString) Img2Base64(content []byte, ext ...string) string 2807 ``` 2808 Img2Base64 将图片字节转换为base64字符串.ext为图片扩展名,默认jpg. 2809 2810 #### func (*LkkString) Index 2811 2812 ```go 2813 func (ks *LkkString) Index(str, sub string, ignoreCase bool) int 2814 ``` 2815 Index 查找子串sub在字符串str中第一次出现的位置,不存在则返回-1; ignoreCase为是否忽略大小写. 2816 2817 #### func (*LkkString) IsASCII 2818 2819 ```go 2820 func (ks *LkkString) IsASCII(str string) bool 2821 ``` 2822 IsASCII 是否ASCII字符串. 2823 2824 #### func (*LkkString) IsAlphaNumeric 2825 2826 ```go 2827 func (ks *LkkString) IsAlphaNumeric(str string) bool 2828 ``` 2829 IsAlphaNumeric 是否字母或数字. 2830 2831 #### func (*LkkString) IsBase64 2832 2833 ```go 2834 func (ks *LkkString) IsBase64(str string) bool 2835 ``` 2836 IsBase64 是否base64字符串. 2837 2838 #### func (*LkkString) IsBase64Image 2839 2840 ```go 2841 func (ks *LkkString) IsBase64Image(str string) bool 2842 ``` 2843 IsBase64Image 是否base64编码的图片. 2844 2845 #### func (*LkkString) IsBlank 2846 2847 ```go 2848 func (ks *LkkString) IsBlank(str string) bool 2849 ``` 2850 IsBlank 是否空(空白)字符串. 2851 2852 #### func (*LkkString) IsChinese 2853 2854 ```go 2855 func (ks *LkkString) IsChinese(str string) bool 2856 ``` 2857 IsChinese 字符串是否全部中文. 2858 2859 #### func (*LkkString) IsChineseName 2860 2861 ```go 2862 func (ks *LkkString) IsChineseName(str string) bool 2863 ``` 2864 IsChineseName 字符串是否中文名称. 2865 2866 #### func (*LkkString) IsCreditNo 2867 2868 ```go 2869 func (ks *LkkString) IsCreditNo(str string) (bool, string) 2870 ``` 2871 IsCreditNo 检查是否(15或18位)身份证号码,并返回经校验的号码. 2872 2873 #### func (*LkkString) IsDNSName 2874 2875 ```go 2876 func (ks *LkkString) IsDNSName(str string) bool 2877 ``` 2878 IsDNSName 是否DNS名称. 2879 2880 #### func (*LkkString) IsDialAddr 2881 2882 ```go 2883 func (ks *LkkString) IsDialAddr(str string) bool 2884 ``` 2885 IsDialAddr 是否网络拨号地址(形如127.0.0.1:80),用于net.Dial()检查. 2886 2887 #### func (*LkkString) IsEmail 2888 2889 ```go 2890 func (ks *LkkString) IsEmail(email string, validateHost bool) (bool, error) 2891 ``` 2892 IsEmail 检查字符串是否邮箱.参数validateTrue,是否验证邮箱主机的真实性. 2893 2894 #### func (*LkkString) IsEmpty 2895 2896 ```go 2897 func (ks *LkkString) IsEmpty(str string) bool 2898 ``` 2899 IsEmpty 字符串是否为空(包括空格). 2900 2901 #### func (*LkkString) IsEnglish 2902 2903 ```go 2904 func (ks *LkkString) IsEnglish(str string, letterCase LkkCaseSwitch) bool 2905 ``` 2906 IsEnglish 字符串是否纯英文.letterCase是否检查大小写,枚举值(CASE_NONE,CASE_LOWER,CASE_UPPER). 2907 2908 #### func (*LkkString) IsGbk 2909 2910 ```go 2911 func (ks *LkkString) IsGbk(s []byte) (res bool) 2912 ``` 2913 IsGbk 字符串是否GBK编码. 2914 2915 #### func (*LkkString) IsHexcolor 2916 2917 ```go 2918 func (ks *LkkString) IsHexcolor(str string) (bool, string) 2919 ``` 2920 IsHexcolor 检查是否十六进制颜色,并返回带"#"的修正值. 2921 2922 #### func (*LkkString) IsHost 2923 2924 ```go 2925 func (ks *LkkString) IsHost(str string) bool 2926 ``` 2927 IsHost 字符串是否主机名(IP或DNS名称). 2928 2929 #### func (*LkkString) IsIP 2930 2931 ```go 2932 func (ks *LkkString) IsIP(str string) bool 2933 ``` 2934 IsIP 检查字符串是否IP地址. 2935 2936 #### func (*LkkString) IsIPv4 2937 2938 ```go 2939 func (ks *LkkString) IsIPv4(str string) bool 2940 ``` 2941 IsIPv4 检查字符串是否IPv4地址. 2942 2943 #### func (*LkkString) IsIPv6 2944 2945 ```go 2946 func (ks *LkkString) IsIPv6(str string) bool 2947 ``` 2948 IsIPv6 检查字符串是否IPv6地址. 2949 2950 #### func (*LkkString) IsJSON 2951 2952 ```go 2953 func (ks *LkkString) IsJSON(str string) bool 2954 ``` 2955 IsJSON 字符串是否合法的json格式. 2956 2957 #### func (*LkkString) IsLetters 2958 2959 ```go 2960 func (ks *LkkString) IsLetters(str string) bool 2961 ``` 2962 IsLetters 字符串是否全(英文)字母组成. 2963 2964 #### func (*LkkString) IsLower 2965 2966 ```go 2967 func (ks *LkkString) IsLower(str string) bool 2968 ``` 2969 IsLower 字符串是否全部小写. 2970 2971 #### func (*LkkString) IsMACAddr 2972 2973 ```go 2974 func (ks *LkkString) IsMACAddr(str string) bool 2975 ``` 2976 IsMACAddr 是否MAC物理网卡地址. 2977 2978 #### func (*LkkString) IsMd5 2979 2980 ```go 2981 func (ks *LkkString) IsMd5(str string) bool 2982 ``` 2983 IsMd5 是否md5值. 2984 2985 #### func (*LkkString) IsMobilecn 2986 2987 ```go 2988 func (ks *LkkString) IsMobilecn(str string) bool 2989 ``` 2990 IsMobilecn 检查字符串是否中国大陆手机号. 2991 2992 #### func (*LkkString) IsMultibyte 2993 2994 ```go 2995 func (ks *LkkString) IsMultibyte(str string) bool 2996 ``` 2997 IsMultibyte 字符串是否含有多字节字符. 2998 2999 #### func (*LkkString) IsNumeric 3000 3001 ```go 3002 func (ks *LkkString) IsNumeric(str string) bool 3003 ``` 3004 IsNumeric 字符串是否数值(不包含复数和科学计数法). 3005 3006 #### func (*LkkString) IsPhone 3007 3008 ```go 3009 func (ks *LkkString) IsPhone(str string) bool 3010 ``` 3011 IsPhone 是否电话号码(手机或固话). 3012 3013 #### func (*LkkString) IsRGBcolor 3014 3015 ```go 3016 func (ks *LkkString) IsRGBcolor(str string) bool 3017 ``` 3018 IsRGBcolor 检查字符串是否RGB颜色格式. 3019 3020 #### func (*LkkString) IsRsaPublicKey 3021 3022 ```go 3023 func (ks *LkkString) IsRsaPublicKey(str string, keylen uint16) bool 3024 ``` 3025 IsRsaPublicKey 检查字符串是否RSA的公钥,keylen为密钥长度. 3026 3027 #### func (*LkkString) IsSha1 3028 3029 ```go 3030 func (ks *LkkString) IsSha1(str string) bool 3031 ``` 3032 IsSha1 是否Sha1值. 3033 3034 #### func (*LkkString) IsSha256 3035 3036 ```go 3037 func (ks *LkkString) IsSha256(str string) bool 3038 ``` 3039 IsSha256 是否Sha256值. 3040 3041 #### func (*LkkString) IsSha512 3042 3043 ```go 3044 func (ks *LkkString) IsSha512(str string) bool 3045 ``` 3046 IsSha512 是否Sha512值. 3047 3048 #### func (*LkkString) IsTel 3049 3050 ```go 3051 func (ks *LkkString) IsTel(str string) bool 3052 ``` 3053 IsTel 是否固定电话或400/800电话. 3054 3055 #### func (*LkkString) IsUpper 3056 3057 ```go 3058 func (ks *LkkString) IsUpper(str string) bool 3059 ``` 3060 IsUpper 字符串是否全部大写. 3061 3062 #### func (*LkkString) IsUrl 3063 3064 ```go 3065 func (ks *LkkString) IsUrl(str string) bool 3066 ``` 3067 IsUrl 检查字符串是否URL. 3068 3069 #### func (*LkkString) IsUrlExists 3070 3071 ```go 3072 func (ks *LkkString) IsUrlExists(str string) bool 3073 ``` 3074 IsUrlExists 检查URL是否存在. 3075 3076 #### func (*LkkString) IsUtf8 3077 3078 ```go 3079 func (ks *LkkString) IsUtf8(s []byte) bool 3080 ``` 3081 IsUtf8 字符串是否UTF-8编码. 3082 3083 #### func (*LkkString) IsWhitespaces 3084 3085 ```go 3086 func (ks *LkkString) IsWhitespaces(str string) bool 3087 ``` 3088 IsWhitespaces 是否全部空白字符,不包括空字符串. 3089 3090 #### func (*LkkString) IsWord 3091 3092 ```go 3093 func (ks *LkkString) IsWord(str string) bool 3094 ``` 3095 IsWord 是否词语(不以下划线开头的中文、英文、数字、下划线). 3096 3097 #### func (*LkkString) JsonDecode 3098 3099 ```go 3100 func (ks *LkkString) JsonDecode(str []byte, res interface{}) error 3101 ``` 3102 JsonDecode 对 JSON 格式的str字符串进行解码,注意res使用指针. 依赖库github.com/json-iterator/go. 3103 3104 #### func (*LkkString) JsonEncode 3105 3106 ```go 3107 func (ks *LkkString) JsonEncode(val interface{}) ([]byte, error) 3108 ``` 3109 JsonEncode 对val变量进行 JSON 编码. 依赖库github.com/json-iterator/go. 3110 3111 #### func (*LkkString) Jsonp2Json 3112 3113 ```go 3114 func (ks *LkkString) Jsonp2Json(str string) (string, error) 3115 ``` 3116 Jsonp2Json 将jsonp转为json串. Example: forbar({a:"1",b:2}) to {"a":"1","b":2} 3117 3118 #### func (*LkkString) LastIndex 3119 3120 ```go 3121 func (ks *LkkString) LastIndex(str, sub string, ignoreCase bool) int 3122 ``` 3123 LastIndex 查找子串sub在字符串str中最后一次出现的位置,不存在则返回-1; ignoreCase为是否忽略大小写. 3124 3125 #### func (*LkkString) Lcfirst 3126 3127 ```go 3128 func (ks *LkkString) Lcfirst(str string) string 3129 ``` 3130 Lcfirst 将字符串的第一个字符转换为小写. 3131 3132 #### func (*LkkString) Lcwords 3133 3134 ```go 3135 func (ks *LkkString) Lcwords(str string) string 3136 ``` 3137 Lcwords 将字符串中每个词的首字母转换为小写. 3138 3139 #### func (*LkkString) Levenshtein 3140 3141 ```go 3142 func (ks *LkkString) Levenshtein(a, b string) int 3143 ``` 3144 Levenshtein 计算两个字符串之间的编辑距离,返回值越小字符串越相似. 注意字符串最大长度为255. 3145 3146 #### func (*LkkString) Ltrim 3147 3148 ```go 3149 func (ks *LkkString) Ltrim(str string, characterMask ...string) string 3150 ``` 3151 Ltrim 删除字符串开头的空白字符(或其他字符). characterMask为要修剪的字符. 3152 3153 #### func (*LkkString) MatchEquations 3154 3155 ```go 3156 func (ks *LkkString) MatchEquations(str string) (res []string) 3157 ``` 3158 MatchEquations 匹配字符串中所有的等式. 3159 3160 #### func (*LkkString) MbStrlen 3161 3162 ```go 3163 func (ks *LkkString) MbStrlen(str string) int 3164 ``` 3165 MbStrlen 获取宽字符串的长度,多字节的字符被计为 1. 3166 3167 #### func (*LkkString) MbSubstr 3168 3169 ```go 3170 func (ks *LkkString) MbSubstr(str string, start int, length ...int) string 3171 ``` 3172 MbSubstr 返回(宽字符)字符串str的子串. start 为起始位置.若值是负数,返回的结果将从 str 结尾处向前数第 abs(start) 3173 个字符开始. length 为截取的长度.若值时负数, str 末尾处的 abs(length) 个字符将会被省略. 3174 start/length的绝对值必须<=原字符串长度. 3175 3176 #### func (*LkkString) Md5 3177 3178 ```go 3179 func (ks *LkkString) Md5(str string, length ...uint8) string 3180 ``` 3181 Md5 获取字符串md5值. length指定结果长度,默认32. 3182 3183 #### func (*LkkString) Md5Byte 3184 3185 ```go 3186 func (ks *LkkString) Md5Byte(str []byte, length ...uint8) []byte 3187 ``` 3188 Md5 获取字节切片md5值. length指定结果长度,默认32. 3189 3190 #### func (*LkkString) Nl2br 3191 3192 ```go 3193 func (ks *LkkString) Nl2br(str string) string 3194 ``` 3195 Nl2br 将换行符转换为br标签. 3196 3197 #### func (*LkkString) Ord 3198 3199 ```go 3200 func (ks *LkkString) Ord(char string) rune 3201 ``` 3202 Ord 将首字符转换为rune(ASCII值). 注意:当字符串为空时返回65533. 3203 3204 #### func (*LkkString) ParseStr 3205 3206 ```go 3207 func (ks *LkkString) ParseStr(encodedString string, result map[string]interface{}) error 3208 ``` 3209 ParseStr 将URI查询字符串转换为字典. 3210 3211 #### func (*LkkString) ParseUrl 3212 3213 ```go 3214 func (ks *LkkString) ParseUrl(str string, component int16) (map[string]string, error) 3215 ``` 3216 ParseUrl 解析URL,返回其组成部分. component为需要返回的组成; -1: all; 1: scheme; 2: host; 4: port; 3217 8: user; 16: pass; 32: path; 64: query; 128: fragment . 3218 3219 #### func (*LkkString) Quotemeta 3220 3221 ```go 3222 func (ks *LkkString) Quotemeta(str string) string 3223 ``` 3224 Quotemeta 转义元字符集,包括 . \ + * ? [ ^ ] ( $ )等. 3225 3226 #### func (*LkkString) Random 3227 3228 ```go 3229 func (ks *LkkString) Random(length uint8, rtype LkkRandString) string 3230 ``` 3231 Random 生成随机字符串. length为长度,rtype为枚举: RAND_STRING_ALPHA 字母; RAND_STRING_NUMERIC 3232 数值; RAND_STRING_ALPHANUM 字母+数值; RAND_STRING_SPECIAL 字母+数值+特殊字符; 3233 RAND_STRING_CHINESE 仅中文. 3234 3235 #### func (*LkkString) RawUrlDecode 3236 3237 ```go 3238 func (ks *LkkString) RawUrlDecode(str string) (string, error) 3239 ``` 3240 RawUrlDecode 对已编码的 URL 字符串进行解码. 3241 3242 #### func (*LkkString) RawUrlEncode 3243 3244 ```go 3245 func (ks *LkkString) RawUrlEncode(str string) string 3246 ``` 3247 RawUrlEncode 按照 RFC 3986 对 URL 进行编码. 3248 3249 #### func (*LkkString) RemoveAfter 3250 3251 ```go 3252 func (ks *LkkString) RemoveAfter(str, after string, include, ignoreCase bool) string 3253 ``` 3254 RemoveAfter 移除after之后的字符串; include为是否移除包括after本身; ignoreCase为是否忽略大小写. 3255 3256 #### func (*LkkString) RemoveBefore 3257 3258 ```go 3259 func (ks *LkkString) RemoveBefore(str, before string, include, ignoreCase bool) string 3260 ``` 3261 RemoveBefore 移除before之前的字符串; include为是否移除包括before本身; ignoreCase为是否忽略大小写. 3262 3263 #### func (*LkkString) RemoveEmoji 3264 3265 ```go 3266 func (ks *LkkString) RemoveEmoji(str string) string 3267 ``` 3268 RemoveEmoji 移除字符串中的表情符(使用正则,效率较低). 3269 3270 #### func (*LkkString) RemoveSpace 3271 3272 ```go 3273 func (ks *LkkString) RemoveSpace(str string, all bool) string 3274 ``` 3275 RemoveSpace 移除字符串中的空白字符. all为true时移除全部空白,为false时只替换连续的空白字符为一个空格. 3276 3277 #### func (*LkkString) Reverse 3278 3279 ```go 3280 func (ks *LkkString) Reverse(str string) string 3281 ``` 3282 Reverse 反转字符串. 3283 3284 #### func (*LkkString) Rtrim 3285 3286 ```go 3287 func (ks *LkkString) Rtrim(str string, characterMask ...string) string 3288 ``` 3289 Rtrim 删除字符串末端的空白字符(或者其他字符). characterMask为要修剪的字符. 3290 3291 #### func (*LkkString) SBC2DBC 3292 3293 ```go 3294 func (ks *LkkString) SBC2DBC(s string) string 3295 ``` 3296 SBC2DBC 全角转半角. 3297 3298 #### func (*LkkString) Serialize 3299 3300 ```go 3301 func (ks *LkkString) Serialize(val interface{}) ([]byte, error) 3302 ``` 3303 Serialize 对变量进行序列化. 3304 3305 #### func (*LkkString) ShaX 3306 3307 ```go 3308 func (ks *LkkString) ShaX(str string, x uint16) string 3309 ``` 3310 ShaX 计算字符串的 shaX 散列值,x为1/256/512 . 3311 3312 #### func (*LkkString) ShaXByte 3313 3314 ```go 3315 func (ks *LkkString) ShaXByte(str []byte, x uint16) []byte 3316 ``` 3317 ShaXByte 计算字节切片的 shaX 散列值,x为1/256/512 . 3318 3319 #### func (*LkkString) Shuffle 3320 3321 ```go 3322 func (ks *LkkString) Shuffle(str string) string 3323 ``` 3324 Shuffle 随机打乱字符串. 3325 3326 #### func (*LkkString) SimilarText 3327 3328 ```go 3329 func (ks *LkkString) SimilarText(first, second string) (res int, percent float64) 3330 ``` 3331 SimilarText 计算两个字符串的相似度;返回在两个字符串中匹配字符的数目,以及相似程度百分数. 3332 3333 #### func (*LkkString) StartsWith 3334 3335 ```go 3336 func (ks *LkkString) StartsWith(str, sub string, ignoreCase bool) bool 3337 ``` 3338 StartsWith 字符串str是否以sub开头. 3339 3340 #### func (*LkkString) StartsWiths 3341 3342 ```go 3343 func (ks *LkkString) StartsWiths(str string, subs []string, ignoreCase bool) (res bool) 3344 ``` 3345 StartsWiths 字符串str是否以subs其中之一为开头. 3346 3347 #### func (*LkkString) StripTags 3348 3349 ```go 3350 func (ks *LkkString) StripTags(str string) string 3351 ``` 3352 StripTags 过滤html标签. 3353 3354 #### func (*LkkString) Stripos 3355 3356 ```go 3357 func (ks *LkkString) Stripos(haystack, needle string, offset int) int 3358 ``` 3359 Stripos 查找字符串首次出现的位置(不区分大小写),找不到时返回-1. haystack在该字符串中进行查找,needle要查找的字符串; 3360 offset起始位置,为负数时时,搜索会从字符串结尾指定字符数开始. 3361 3362 #### func (*LkkString) Stripslashes 3363 3364 ```go 3365 func (ks *LkkString) Stripslashes(str string) string 3366 ``` 3367 Stripslashes 反引用一个引用字符串. 3368 3369 #### func (*LkkString) Strlen 3370 3371 ```go 3372 func (ks *LkkString) Strlen(str string) int 3373 ``` 3374 Strlen 获取字符串长度. 3375 3376 #### func (*LkkString) Strpad 3377 3378 ```go 3379 func (ks *LkkString) Strpad(str string, fill string, max int, ptype LkkPadType) string 3380 ``` 3381 Strpad 使用fill填充str字符串到指定长度max. ptype为填充类型,枚举值(PAD_LEFT,PAD_RIGHT,PAD_BOTH). 3382 3383 #### func (*LkkString) StrpadBoth 3384 3385 ```go 3386 func (ks *LkkString) StrpadBoth(str string, fill string, max int) string 3387 ``` 3388 StrpadBoth 字符串两侧填充,请参考Strpad. 3389 3390 #### func (*LkkString) StrpadLeft 3391 3392 ```go 3393 func (ks *LkkString) StrpadLeft(str string, fill string, max int) string 3394 ``` 3395 StrpadLeft 字符串左侧填充,请参考Strpad. 3396 3397 #### func (*LkkString) StrpadRight 3398 3399 ```go 3400 func (ks *LkkString) StrpadRight(str string, fill string, max int) string 3401 ``` 3402 StrpadRight 字符串右侧填充,请参考Strpad. 3403 3404 #### func (*LkkString) Strpos 3405 3406 ```go 3407 func (ks *LkkString) Strpos(haystack, needle string, offset int) int 3408 ``` 3409 Strpos 查找字符串首次出现的位置,找不到时返回-1. haystack在该字符串中进行查找,needle要查找的字符串; 3410 offset起始位置,为负数时时,搜索会从字符串结尾指定字符数开始. 3411 3412 #### func (*LkkString) Strripos 3413 3414 ```go 3415 func (ks *LkkString) Strripos(haystack, needle string, offset int) int 3416 ``` 3417 Strripos 查找指定字符串在目标字符串中最后一次出现的位置(不区分大小写). 3418 3419 #### func (*LkkString) Strrpos 3420 3421 ```go 3422 func (ks *LkkString) Strrpos(haystack, needle string, offset int) int 3423 ``` 3424 Strrpos 查找指定字符串在目标字符串中最后一次出现的位置. 3425 3426 #### func (*LkkString) Substr 3427 3428 ```go 3429 func (ks *LkkString) Substr(str string, start int, length ...int) string 3430 ``` 3431 Substr 截取字符串str的子串. start 为起始位置.若值是负数,返回的结果将从 str 结尾处向前数第 abs(start) 个字符开始. 3432 length 为截取的长度.若值时负数, str 末尾处的 abs(length) 个字符将会被省略. start/length的绝对值必须<=原字符串长度. 3433 3434 #### func (*LkkString) SubstrCount 3435 3436 ```go 3437 func (ks *LkkString) SubstrCount(str, substr string) int 3438 ``` 3439 SubstrCount 计算子串substr在字符串str中出现的次数,区分大小写. 3440 3441 #### func (*LkkString) SubstriCount 3442 3443 ```go 3444 func (ks *LkkString) SubstriCount(str, substr string) int 3445 ``` 3446 SubstriCount 计算子串substr在字符串str中出现的次数,忽略大小写. 3447 3448 #### func (*LkkString) ToCamelCase 3449 3450 ```go 3451 func (ks *LkkString) ToCamelCase(str string) string 3452 ``` 3453 ToCamelCase 转为驼峰写法. 去掉包括下划线"_"和横杠"-". 3454 3455 #### func (*LkkString) ToKebabCase 3456 3457 ```go 3458 func (ks *LkkString) ToKebabCase(str string) string 3459 ``` 3460 ToSnakeCase 转为串形写法. 使用横杠"-"连接. 3461 3462 #### func (*LkkString) ToSnakeCase 3463 3464 ```go 3465 func (ks *LkkString) ToSnakeCase(str string) string 3466 ``` 3467 ToSnakeCase 转为蛇形写法. 使用下划线"_"连接. 3468 3469 #### func (*LkkString) Trim 3470 3471 ```go 3472 func (ks *LkkString) Trim(str string, characterMask ...string) string 3473 ``` 3474 Trim 去除字符串首尾处的空白字符(或者其他字符). characterMask为要修剪的字符. 3475 3476 #### func (*LkkString) TrimBOM 3477 3478 ```go 3479 func (ks *LkkString) TrimBOM(str []byte) []byte 3480 ``` 3481 TrimBOM 移除字符串中的BOM 3482 3483 #### func (*LkkString) Ucfirst 3484 3485 ```go 3486 func (ks *LkkString) Ucfirst(str string) string 3487 ``` 3488 Ucfirst 将字符串的第一个字符转换为大写. 3489 3490 #### func (*LkkString) Ucwords 3491 3492 ```go 3493 func (ks *LkkString) Ucwords(str string) string 3494 ``` 3495 Ucwords 将字符串中每个词的首字母转换为大写. 3496 3497 #### func (*LkkString) UnSerialize 3498 3499 ```go 3500 func (ks *LkkString) UnSerialize(data []byte, register ...interface{}) (val interface{}, err error) 3501 ``` 3502 UnSerialize 对字符串进行反序列化. 其中register注册对象,其类型必须和Serialize的一致. 3503 3504 #### func (*LkkString) Uniqid 3505 3506 ```go 3507 func (ks *LkkString) Uniqid(prefix string) string 3508 ``` 3509 Uniqid 获取一个带前缀的唯一ID(24位). prefix 为前缀字符串. 3510 3511 #### func (*LkkString) UrlDecode 3512 3513 ```go 3514 func (ks *LkkString) UrlDecode(str string) (string, error) 3515 ``` 3516 UrlDecode 解码已编码的 URL 字符串. 3517 3518 #### func (*LkkString) UrlEncode 3519 3520 ```go 3521 func (ks *LkkString) UrlEncode(str string) string 3522 ``` 3523 UrlEncode 编码 URL 字符串. 3524 3525 #### func (*LkkString) Utf8ToBig5 3526 3527 ```go 3528 func (ks *LkkString) Utf8ToBig5(s []byte) ([]byte, error) 3529 ``` 3530 Utf8ToBig5 UTF-8转BIG5编码. 3531 3532 #### func (*LkkString) Utf8ToGbk 3533 3534 ```go 3535 func (ks *LkkString) Utf8ToGbk(s []byte) ([]byte, error) 3536 ``` 3537 Utf8ToGbk UTF-8转GBK编码. 3538 3539 #### func (*LkkString) UuidV4 3540 3541 ```go 3542 func (ks *LkkString) UuidV4() (string, error) 3543 ``` 3544 UuidV4 获取36位UUID(Version4). 3545 3546 #### func (*LkkString) VersionCompare 3547 3548 ```go 3549 func (ks *LkkString) VersionCompare(version1, version2, operator string) (bool, error) 3550 ``` 3551 VersionCompare 对比两个版本号字符串. operator允许的操作符有: <, lt, <=, le, >, gt, >=, ge, ==, =, 3552 eq, !=, <>, ne . 特定的版本字符串,将会用以下顺序处理: 无 < dev < alpha = a < beta = b < RC = rc < 3553 # < pl = p < ga < release = r 用法: VersionCompare("1.2.3-alpha", "1.2.3RC7", 3554 '>=') ; VersionCompare("1.2.3-beta", "1.2.3pl", 'lt') ; 3555 VersionCompare("1.1_dev", "1.2any", 'eq') . 3556 3557 #### type LkkTime 3558 3559 ```go 3560 type LkkTime struct { 3561 } 3562 ``` 3563 3564 LkkTime is the receiver of time utilities 3565 3566 #### func (*LkkTime) CheckDate 3567 3568 ```go 3569 func (kt *LkkTime) CheckDate(year, month, day int) bool 3570 ``` 3571 CheckDate 检查是否正常的日期. 3572 3573 #### func (*LkkTime) Date 3574 3575 ```go 3576 func (kt *LkkTime) Date(format string, ts ...interface{}) string 3577 ``` 3578 Date 格式化时间. format 格式,如"Y-m-d H:i:s". ts为int/int64类型时间戳或time.Time类型. 3579 3580 #### func (*LkkTime) Day 3581 3582 ```go 3583 func (kt *LkkTime) Day(t ...time.Time) int 3584 ``` 3585 Day 获取日份. 3586 3587 #### func (*LkkTime) DaysBetween 3588 3589 ```go 3590 func (kt *LkkTime) DaysBetween(fromDate, toDate time.Time) int 3591 ``` 3592 DaysBetween 获取两个日期的间隔天数. fromDate 为开始时间,toDate 为终点时间. 3593 3594 #### func (*LkkTime) EndOfDay 3595 3596 ```go 3597 func (kt *LkkTime) EndOfDay(date time.Time) time.Time 3598 ``` 3599 EndOfDay 获取日期中当天的结束时间. 3600 3601 #### func (*LkkTime) EndOfMonth 3602 3603 ```go 3604 func (kt *LkkTime) EndOfMonth(date time.Time) time.Time 3605 ``` 3606 EndOfMonth 获取日期中当月的结束时间. 3607 3608 #### func (*LkkTime) EndOfWeek 3609 3610 ```go 3611 func (kt *LkkTime) EndOfWeek(date time.Time, weekStartDay ...time.Weekday) time.Time 3612 ``` 3613 EndOfWeek 获取日期中当周的结束时间; weekStartDay 周几作为周的第一天,本库默认周一. 3614 3615 #### func (*LkkTime) EndOfYear 3616 3617 ```go 3618 func (kt *LkkTime) EndOfYear(date time.Time) time.Time 3619 ``` 3620 EndOfYear 获取日期中当年的结束时间. 3621 3622 #### func (*LkkTime) GetMonthDays 3623 3624 ```go 3625 func (kt *LkkTime) GetMonthDays(month int, year ...int) (days int) 3626 ``` 3627 GetMonthDays 获取指定月份的天数.year年份,可选,默认当前年份. 3628 3629 #### func (*LkkTime) Hour 3630 3631 ```go 3632 func (kt *LkkTime) Hour(t ...time.Time) int 3633 ``` 3634 Hour 获取小时. 3635 3636 #### func (*LkkTime) IsDate2time 3637 3638 ```go 3639 func (kt *LkkTime) IsDate2time(str string) (bool, int64) 3640 ``` 3641 IsDate2time 检查字符串是否日期格式,并转换为时间戳.注意,时间戳可能为负数(小于1970年时). 匹配如: 3642 3643 0000 3644 0000-00 3645 0000/00 3646 0000-00-00 3647 0000/00/00 3648 0000-00-00 00 3649 0000/00/00 00 3650 0000-00-00 00:00 3651 0000/00/00 00:00 3652 0000-00-00 00:00:00 3653 0000/00/00 00:00:00 3654 3655 等日期格式. 3656 3657 #### func (*LkkTime) MicroTime 3658 3659 ```go 3660 func (kt *LkkTime) MicroTime() int64 3661 ``` 3662 MicroTime 获取当前Unix时间戳(微秒,16位). 3663 3664 #### func (*LkkTime) MilliTime 3665 3666 ```go 3667 func (kt *LkkTime) MilliTime() int64 3668 ``` 3669 MilliTime 获取当前Unix时间戳(毫秒,13位). 3670 3671 #### func (*LkkTime) Minute 3672 3673 ```go 3674 func (kt *LkkTime) Minute(t ...time.Time) int 3675 ``` 3676 Minute 获取分钟. 3677 3678 #### func (*LkkTime) Month 3679 3680 ```go 3681 func (kt *LkkTime) Month(t ...time.Time) int 3682 ``` 3683 Month 获取月份. 3684 3685 #### func (*LkkTime) Second 3686 3687 ```go 3688 func (kt *LkkTime) Second(t ...time.Time) int 3689 ``` 3690 Second 获取秒数. 3691 3692 #### func (*LkkTime) ServiceStartime 3693 3694 ```go 3695 func (kt *LkkTime) ServiceStartime() int64 3696 ``` 3697 ServiceStartime 获取当前服务启动时间戳,秒. 3698 3699 #### func (*LkkTime) ServiceUptime 3700 3701 ```go 3702 func (kt *LkkTime) ServiceUptime() time.Duration 3703 ``` 3704 ServiceUptime 获取当前服务运行时间,纳秒int64. 3705 3706 #### func (*LkkTime) Sleep 3707 3708 ```go 3709 func (kt *LkkTime) Sleep(t int64) 3710 ``` 3711 Sleep 延缓执行,秒. 3712 3713 #### func (*LkkTime) StartOfDay 3714 3715 ```go 3716 func (kt *LkkTime) StartOfDay(date time.Time) time.Time 3717 ``` 3718 StartOfDay 获取日期中当天的开始时间. 3719 3720 #### func (*LkkTime) StartOfMonth 3721 3722 ```go 3723 func (kt *LkkTime) StartOfMonth(date time.Time) time.Time 3724 ``` 3725 StartOfMonth 获取日期中当月的开始时间. 3726 3727 #### func (*LkkTime) StartOfWeek 3728 3729 ```go 3730 func (kt *LkkTime) StartOfWeek(date time.Time, weekStartDay ...time.Weekday) time.Time 3731 ``` 3732 StartOfWeek 获取日期中当周的开始时间; weekStartDay 周几作为周的第一天,本库默认周一. 3733 3734 #### func (*LkkTime) StartOfYear 3735 3736 ```go 3737 func (kt *LkkTime) StartOfYear(date time.Time) time.Time 3738 ``` 3739 StartOfYear 获取日期中当年的开始时间. 3740 3741 #### func (*LkkTime) Str2Timestamp 3742 3743 ```go 3744 func (kt *LkkTime) Str2Timestamp(str string, format ...string) (int64, error) 3745 ``` 3746 Str2Timestamp 将字符串转换为时间戳,秒. str 为要转换的字符串; format 为该字符串的格式,默认为"2006-01-02 3747 15:04:05" . 3748 3749 #### func (*LkkTime) Str2Timestruct 3750 3751 ```go 3752 func (kt *LkkTime) Str2Timestruct(str string, format ...string) (time.Time, error) 3753 ``` 3754 Str2Time 将字符串转换为时间结构. str 为要转换的字符串; format 为该字符串的格式,默认为"2006-01-02 15:04:05" . 3755 3756 #### func (*LkkTime) UnixTime 3757 3758 ```go 3759 func (kt *LkkTime) UnixTime() int64 3760 ``` 3761 Time 获取当前Unix时间戳(秒,10位). 3762 3763 #### func (*LkkTime) Usleep 3764 3765 ```go 3766 func (kt *LkkTime) Usleep(t int64) 3767 ``` 3768 Usleep 以指定的微秒数延迟执行. 3769 3770 #### func (*LkkTime) Year 3771 3772 ```go 3773 func (kt *LkkTime) Year(t ...time.Time) int 3774 ``` 3775 Year 获取年份. 3776 3777 #### type SystemInfo 3778 3779 ```go 3780 type SystemInfo struct { 3781 ServerName string `json:"server_name"` //服务器名称 3782 SystemOs string `json:"system_os"` //操作系统名称 3783 Runtime uint64 `json:"run_time"` //服务运行时间,纳秒 3784 Uptime uint64 `json:"up_time"` //操作系统运行时间,秒 3785 GoroutineNum int `json:"goroutine_num"` //goroutine数量 3786 CpuNum int `json:"cpu_num"` //cpu核数 3787 CpuUser float64 `json:"cpu_user"` //cpu用户态比率 3788 CpuFree float64 `json:"cpu_free"` //cpu空闲比率 3789 DiskUsed uint64 `json:"disk_used"` //已用磁盘空间,字节数 3790 DiskFree uint64 `json:"disk_free"` //可用磁盘空间,字节数 3791 DiskTotal uint64 `json:"disk_total"` //总磁盘空间,字节数 3792 MemUsed uint64 `json:"mem_used"` //已用内存,字节数 3793 MemSys uint64 `json:"mem_sys"` //系统内存占用量,字节数 3794 MemFree uint64 `json:"mem_free"` //剩余内存,字节数 3795 MemTotal uint64 `json:"mem_total"` //总内存,字节数 3796 AllocGolang uint64 `json:"alloc_golang"` //golang内存使用量,字节数 3797 AllocTotal uint64 `json:"alloc_total"` //总分配的内存,字节数 3798 Lookups uint64 `json:"lookups"` //指针查找次数 3799 Mallocs uint64 `json:"mallocs"` //内存分配次数 3800 Frees uint64 `json:"frees"` //内存释放次数 3801 LastGCTime uint64 `json:"last_gc_time"` //上次GC时间,纳秒 3802 NextGC uint64 `json:"next_gc"` //下次GC内存回收量,字节数 3803 PauseTotalNs uint64 `json:"pause_total_ns"` //GC暂停时间总量,纳秒 3804 PauseNs uint64 `json:"pause_ns"` //上次GC暂停时间,纳秒 3805 } 3806 ``` 3807 3808 SystemInfo 系统信息 3809 3810 #### type Win32_Process 3811 3812 ```go 3813 type Win32_Process struct { 3814 Name string 3815 ExecutablePath *string 3816 CommandLine *string 3817 Priority uint32 3818 CreationDate *time.Time 3819 ProcessId uint32 3820 ThreadCount uint32 3821 Status *string 3822 ReadOperationCount uint64 3823 ReadTransferCount uint64 3824 WriteOperationCount uint64 3825 WriteTransferCount uint64 3826 CSCreationClassName string 3827 CSName string 3828 Caption *string 3829 CreationClassName string 3830 Description *string 3831 ExecutionState *uint16 3832 HandleCount uint32 3833 KernelModeTime uint64 3834 MaximumWorkingSetSize *uint32 3835 MinimumWorkingSetSize *uint32 3836 OSCreationClassName string 3837 OSName string 3838 OtherOperationCount uint64 3839 OtherTransferCount uint64 3840 PageFaults uint32 3841 PageFileUsage uint32 3842 ParentProcessID uint32 3843 PeakPageFileUsage uint32 3844 PeakVirtualSize uint64 3845 PeakWorkingSetSize uint32 3846 PrivatePageCount uint64 3847 TerminationDate *time.Time 3848 UserModeTime uint64 3849 WorkingSetSize uint64 3850 } 3851 ```