【Go】如何组织自己的包

作者:wallace-lai
发布:2023-07-19
更新:2023-07-19

创建工程目录并使用go mod初始化

假设工程目录叫demo,创建demo目录并使用go mod进行初始化。初始化成功后目录下会多一个go.mod文件。

~/workspace$ mkdir demo
~/workspace$ cd demo
~/workspace/demo$ go mod init example.com/demov1
go: creating new go.mod: module example.com/demov1
~/workspace/demo$ 
~/workspace/demo$ ls
go.mod
~/workspace/demo$ 

组织自己的package

接下来我们编写属于自己的名为calc的package,如下所示:创建calc子目录;在子目录下分别创建calc.go和tools.go源文件。在源文件中编写我们的代码,注意包名为calc。

// calc.go
package calc

func Add(x, y int) int {
        return x + y
}

func Sub(x, y int) int {
        return x - y
}

func add(x, y int) int {
        return Add(x, y)
}
// tools.go
package calc

func Mul(x, y int) int {
        return x * y
}

至此,calc包就编写完成了。我们回到工程目录demo下创建main.go以调用calc子包中的方法,如下所示。注意在导calc包时需要加上工程目录名作为前缀,然后在引用calc包中方法时需要用calc.method()的形式。

// main.go
package main

import (
        "fmt"
        "demo/calc"     // note
)

func main() {
        sum := calc.Add(1, 2)   // note
        mul := calc.Mul(3, 4)

        fmt.Println(sum)
        fmt.Println(mul)
}

最终,整个工程的文件组织形式如下所示。

~/workspace/demo$ tree .
.
├── calc
│   ├── calc.go
│   └── tools.go
├── go.mod
└── main.go

1 directory, 4 files
~/workspace/demo$ 

以上便是在Go语言中组织子包的一个小案例。