新手寫golang第三方庫

charliecen發表於2022-01-27

建立第三方庫

網上搜下了沒有很好的例子,我就找個了簡單的庫來參考著弄,中間改來改去,搞了幾個小時,也算成功了。

直接上效果

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

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

如果需要用的外部檔案,例如配置檔案等,需要拷貝到當前專案的根目錄下,否則找不到。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章