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