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