github.com/PandaGoAdmin/utils@v0.0.0-20211208134815-d5461603a00f/docs/v0.1.9.md (about)

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