在Go中创建自己的包

Go中的包是一个组织一组相关文件的名称空间。 我们可以认为包类似于不同的文件夹。 Go标准库随附了许多可用于构建实际应用程序的软件包 。 此外,Go支持编写自己的软件包,以遵循某些规则促进代码模块化和更好的应用程序可组合性,例如,软件包中的所有源文件必须声明相同的软件包名称。 如果标识符名称的第一个字母以大写字母开头,则Identifiers , Function和Types将导出到其他包。

在Go中创建HTTP服务器一文中,我们已经使用GOROOTGOPATHGOBIN更新了Path ,因此,作为本文的一部分,我们将简单地从在Go中创建一个包开始,请执行以下步骤:

第1步:创建您的工作空间中的目录,以保持源代码包的,对我来说这numberutil$ GOPATH / github.com / arpitaggarwal:

$ mkdir -p $GOPATH/github.com/arpitaggarwal/numberutil

步骤2:移至上一步中创建的目录,并在其中创建一个名为decimalTobinary.go的文件,如下所示:

$ cd $GOPATH/github.com/arpitaggarwal/numberutil
$ touch decimalTobinary.go

复制以下Go代码:

package numberutil

import "strconv"

//Convert Decimal to Binary
func DecimalToBinary(decimal int64) string {
	binary := strconv.FormatInt(decimal, 2)
	return binary
}

上面的代码包含一个go函数,该函数将Decimal数字作为输入,并使用strconv.FormatInt函数将其转换为Binary。

步骤3:使用go工具构建numberutil软件包,如下所示:

$ cd $GOPATH
$ go build github.com/arpitaggarwal/numberutil

步骤4:接下来,我们将使用main()方法创建number-util.go ,以使用我们创建的numberutil包中的DecimalToBinary函数,如下所示:

$ cd $GOPATH/github.com/arpitaggarwal/
$ touch number-util.go

复制以下Go代码:

package main

import (
	"fmt"
	"github.com/arpitaggarwal/numberutil"
)

func main() {
	i23 := int64(23)
	fmt.Printf("Decimal to Binary for 23 is %s \n", numberutil.DecimalToBinary(i23))
}

步骤5:使用go工具安装number-util.go

$ go install $GOPATH/github.com/arpitaggarwal/number-util.go

上面的命令编译number-util.go并在$ GOROOT / bin或$ GOBIN目录中生成它的可执行二进制文件。

步骤6:执行 number-util.go移至golang目录:

$ cd golang
$ ./go/bin/number-util

第7步:现在,我们将生成我们创建的numberutil软件包的文档,就像运行godoc工具一样简单,该文档带有-http标志来表示终端的端口号,如下所示:

godoc -http=:9999

现在,在浏览器中打开http:// localhost:9999 / pkg / github.com / arpitaggarwal / numberutil /将向我们展示我们创建的numberutil软件包的文档。

Go还支持使用第三方库或软件包,方法是使用go get命令安装它们或将其手动复制到$ GOPATH / src$ GOPATH中 ,例如,如果我们要使用“ github.com/golang/example/stringutil”中的 Reverse函数该软件包默认情况下在go标准库中不可用,那么我们可以将其安装为:

$ cd golang
$ go get github.com/golang/example/stringutil

或克隆该软件包并将其复制到$ GOPATH / src$ GOPATH目录,然后将其用作:

package main

import (
	"fmt"
	"github.com/golang/example/stringutil"
)
func main() {
	fmt.Println(stringutil.Reverse("!olleh"))
}

完整的源代码托管在github上

翻译自: https://www.javacodegeeks.com/2017/07/creating-package-go.html

你可能感兴趣的:(在Go中创建自己的包)