Golang-com包


前言

看开源项目的时候看到一个很好用的包com,找了一下没有官方文档,看了一下源码记录一下常用的函数,不用再自己去动手写了,源码地址:https://github.com/Unknwon/com


一、安装

go get -u github.com/Unkown/com

二、使用

1.url

  • func UrlEncode(str string) string {}, url encode
  • func UrlDecode(str string) (string, error) {}, url decode
  • func Base64Encode(str string) string {}, base64 encode
  • func Base64Decode(str string) (string, error), base64 decode

2.path

  • func GetGOPATHs() []string {}, 获取gopath
  • func HomeDir() (home string, err error), 获取用户家目录

3.string

  • func AESGCMEncrypt(key, plaintext []byte) ([]byte, error) {}, AES加密
  • func AESGCMDecrypt(key, ciphertext []byte) ([]byte, error) {}, AES解密
  • func IsLetter(l uint8) bool {}, 判断字符l是否是英文字母
  • func Reverse(s string) string {}, 字符逆序输出
  • func Expand(template string, match map[string]string, subs …string) string {}, 替换template中的{k}为match中的match[k],match不匹配则替换成subs[atoi(k)]
  • func RandomCreateBytes(n int, alphabets …byte) []byte {}, 创建随机的字节数组,默认为数字和大小写字母,也可以用alphabets指定
  • func ToSnakeCase(str string) string {}, 驼峰转蛇形, “FirstName” => “first_name”

4.time

  • func Date(ti int64, format string) string {}, int格式的unix时间戳转可读的时间
  • func DateS(ts string, format string) string {}, string格式的unix时间戳转可读的时间
  • 上面两个函数的format,为时间格式,例如"YYYY-MM-DD HH:mm:ss"

5.slice

  • func AppendStr(strs []string, str string) []string {}, 字符串数组追加新的字符串,如果该字符串在切片中存在则不追加
  • func CompareSliceStr(s1, s2 []string) bool {}, 判断两个字符串数组是否一样,数组内容和顺序完全一样则返回true
  • func CompareSliceStrU(s1, s2 []string) bool {}, 判断两个字符串数组是否一样,只判断内容,忽略顺序
  • func IsSliceContainsStr(sl []string, str string) bool {},判断字符串数组是否包含某字符,忽略大小写
  • func IsSliceContainsInt64(sl []int64, i int64) bool {}, 同上,不过是判断int64数组是否包含某int64变量

6.regexp

  • func IsEmail(email string) bool {},判断字符串是否符合邮件地址的格式
  • func IsUrl(url string) bool {}, 判断字符串是否是一个url

7.file

  • func HumaneFileSize(s uint64) string {},转换文件大小到方便阅读的形式
  • func FileMTime(file string) (int64, error) {}, 返回文件的修改时间
  • func FileSize(file string) (int64, error) {}, 返回文件大小,byte
  • func Copy(src, dest string) error {}, 复制文件
  • func WriteFile(filename string, data []byte) error {},写文件
  • func IsFile(filePath string) bool {}, 判断路径是否为一个文件
  • func IsExist(path string) bool {}, 判断路径是否存在,无论是文件还是文件夹

8.dir

  • func IsDir(dir string) bool {}, 判断路径是否是一个文件夹
  • func StatDir(rootPath string, includeDir …bool) ([]string, error) {} 返回路径下面所有文件和文件夹的相对路径,includeDir为false则不包括文件夹
  • func LstatDir(rootPath string, includeDir …bool) ([]string, error) {},同上,返回的内容包括软连接的目录内容
  • func GetAllSubDirs(rootPath string) ([]string, error) {}, 返回所有的子文件夹
  • func LgetAllSubDirs(rootPath string) ([]string, error) {},同上,返回的内容包括软连接的目录内容
  • func GetFileListBySuffix(dirPath, suffix string) ([]string, error), 获取路径下面所有某后缀的文件路径
  • func CopyDir(srcPath, destPath string, filters …func(filePath string) bool) error {},复制文件夹

9.convert

  • string转其他类型
    // Convert string to specify type.
    type StrTo string
    
    func (f StrTo) Exist() bool {
    	return string(f) != string(rune(0x1E))
    }
    
    func (f StrTo) Uint8() (uint8, error) {
    	v, err := strconv.ParseUint(f.String(), 10, 8)
    	return uint8(v), err
    }
    
    func (f StrTo) Int() (int, error) {
    	v, err := strconv.ParseInt(f.String(), 10, 0)
    	return int(v), err
    }
    
    func (f StrTo) Int64() (int64, error) {
    	v, err := strconv.ParseInt(f.String(), 10, 64)
    	return int64(v), err
    }
    
    func (f StrTo) Float64() (float64, error) {
    	v, err := strconv.ParseFloat(f.String(), 64)
    	return float64(v), err
    }
    
    func (f StrTo) MustUint8() uint8 {
    	v, _ := f.Uint8()
    	return v
    }
    
    func (f StrTo) MustInt() int {
    	v, _ := f.Int()
    	return v
    }
    
    func (f StrTo) MustInt64() int64 {
    	v, _ := f.Int64()
    	return v
    }
    
    func (f StrTo) MustFloat64() float64 {
    	v, _ := f.Float64()
    	return v
    }
    
    func (f StrTo) String() string {
    	if f.Exist() {
    		return string(f)
    	}
    	return ""
    }
    
  • func ToStr(value interface{}, args …int) (s string) {}, 其他类型转string

10.commad

  • func ExecCmdDirBytes(dir, cmdName string, args …string) ([]byte, []byte, error) {},在指定目录执行系统指令, 返回byte格式的stdout, stderr和error
  • func ExecCmdBytes(cmdName string, args …string) ([]byte, []byte, error) {}, 同上,不指定目录
  • func ExecCmdDir(dir, cmdName string, args …string) (string, string, error) {}, 在指定目录执行系统指令, 返回string格式的stdout, stderr和error
  • func ExecCmd(cmdName string, args …string) (string, string, error) {}, 同上,不指定目录

总结

很多比较常用的功能,不用重复造轮子了,直接拿来就用,方便

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值