GO 编写自己的库文件并在项目中导入使用

这当然只是一个例子,也是学习中的记载,不是很深奥但是却容易忘记的知识点。
就拿官方的stringutil来作为例子写一下。

创建库文件

在项目路径下创建stringutil项目$GOPATH/src/github.com/magicmshing/stringutil,github.com文件夹是以后很多哦库都需要通过go get去github拉取,为了方便整合我也统一放在github下面,magicmshing是我的github名称,这个没影响,可以直接到src文件夹下面创建都行的。然后在项目里面创建Reverse.go函数文件。这是go官网上的源代码,没有改动什么。

// Package stringutil contains utility functions for working with strings.
package stringutil

// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
    r := []rune(s)
    for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
        r[i], r[j] = r[j], r[i]
    }
    return string(r)
}

然后保存,到项目目录$GOPATH/src/stringutil执行:

go install

注意这个 go install ,如果不在项目里面,则要使用路径,例如: go install $GOPATH/src/github.com/magicmshing/stringutil

然后就生成执行包到pkg里面和可执行文件到bin里面。

golang 的go buildgo install 命令都是可生成可实行文件,了解它们的小区别以选择适合自己的。

go installgo build 在没有参数时运行,都会在当前目录下编译,如果当前目录是软件主程序(package main)

  • go build 会生成可实行文件放在当前目录中
  • go install 则会把它放到 $GOPATH/bin 中。

go install 还会把导入的依赖包编译到 $GOPATH/pkg,并缓存,如果包未做更改,下次编译则直接使用缓存。 go build 命令加参数 -i 也能达到go install 的效果。

如果当前目录是非主包,则go install 直接把编译结果安装到 $GOPATH/pkg

如果项目很大,每次编译都要花很长时间,则建议使用 go install 来编译,充分利用它对依赖包的缓存功能。

关于go install和go build的分析来自go中文文档

然后创建一个测试项目

mkdir  $GOPATH/src/github.com/magicmshing/hello

编写项目文件main.go,把刚刚编写的库通过import导入到文件中来使用。

package main

import (
    "fmt"
    "github.com/magicmshing/stringutil"
)

func main(){
    fmt.Println(stringutil.Reverse("!dlroW ,olleH"))

}

保存后执行:

go mod init

初始化mod管理工具。
然后执行:

go install

没有报错的话就算是成功成功了
在命令行直接运行就会出现正序的结果。
在这里插入图片描述

1 条评论

发表评论

您的电子邮箱地址不会被公开。