新手写golang第三方库

Golang
362
0
0
2022-08-25

创建第三方库

网上搜下了没有很好的例子,我就找个了简单的库来参考着弄,中间改来改去,搞了几个小时,也算成功了。

直接上效果

func main() {
    res := filterStr.Cut.CutString("有钱没钱回家过年", 3)
    fmt.Println(res)

    err := filterStr.Filter.FilStr("考试作弊")
    fmt.Println(err)
}

// 结果
有钱没
存在敏感词

下面说下怎么搞,俺也是新手,第一次搞,所以有啥问题,大家指导下,谢谢。

创建库

这里说明下库是git库,所以需要在自己的github.com上创建。

拉取项目

可以使用命令行

git clone https://github.com/charliecen/filterStr.git

也可以使用可视化工具sourcetree,根据个人喜欢。由于网络问题,我这里拉取和提交用命令行,commit就用sourcetree
注意,本地的文件路径必须是/github.com/charliecen/filterStr,如果不是则需要创建。后面需要用到

编辑代码

go.mod 内容

module github.com/charliecen/filterStr

代码文件

这里列出一个文件cut_str.go,仅供参考
package filterStr

import (
    "regexp" 
    "strings" 
    "unicode"
)

type cutStr struct {}

var Cut = new(cutStr)

func (c *cutStr) CutString(name string, length int) string {
    // 去除前后空格
    name = strings.TrimSpace(name)
    // 请求参数字符串 
    var newName = name
    if len(name) > length {
        // 判断字符串是否是中文 
        if c.isChineseChar(name) {
            // 字符串转rune数组,并截取到有效位置
            runeName := []rune(name)
            newName = string(runeName[:length])
        } else {
            // 否则直接截取有效位置
            newName = name[:length]
        }
    }
    return newName
}

// 判断是否中文字符
func (c *cutStr) isChineseChar(str string) bool {
    for _, r := range str {
        if unicode.Is(unicode.Scripts["Han"], r) || (regexp.MustCompile("[\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b]").MatchString(string(r))) {
            return true
        }
    }
    return false
}

README

这个自己写下说明,可以参考别人的

最后代码提交,并打下标签,网络原因,我直接在浏览器里添加了。

添加标签

新建项目

// 新项目使用第三方包,由于刚上传的代码,线上还未更新到最新版本,所以这里需要指定最新版本号
# go get github.com/charliecen/filterStr@v1.0.2

go: downloading github.com/charliecen/filterStr v1.0.2
go get: upgraded github.com/charliecen/filterStr v1.0.1 => v1.0.2

下面就可以使用了,使用的方式在开始位置

如果需要用的外部文件,例如配置文件等,需要拷贝到当前项目的根目录下,否则找不到。