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 系统信息