代码统计

# Go version >= 1.16
go install github.com/hhatto/gocloc/cmd/gocloc@latest

# Go version < 1.16
go get -u github.com/hhatto/gocloc/cmd/gocloc

# 使用
gocloc .

哈希包

# 安装
go get golang.org/x/crypto

# 使用
import "golang.org/x/crypto/bcrypt"

// BcryptHash 使用 bcrypt 对密码进行加密
func BcryptHash(password string) string {
    // GenerateFromPassword 的第二个参数是 cost 值。建议大于 12,数值越大耗费时间越长
    bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
    return string(bytes)
}

// BcryptCheck 对比明文密码和数据库的哈希值
func BcryptCheck(password, hash string) bool {
    err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
    return err == nil
}

// BcryptIsHashed 判断字符串是否是哈希过的数据
func BcryptIsHashed(str string) bool {
    // bcrypt 加密后的长度等于 60
    return len(str) == 60
}

jwt 包

# 安装
go get github.com/golang-jwt/jwt

限流

go get github.com/ulule/limiter/v3

终端高亮输出

go get github.com/mgutz/ansi

命令行模式

go get github.com/spf13/cobra

转换工具

# 处理大小写
go get github.com/iancoleman/strcase

# 处理英文单复数
go get github.com/gertd/go-pluralize