概述:Go 创建并使用本地包
[toc]
包
包是各种类型和函数的集合。在包中,如果标示符(类型名称,函数名称,方法名称)的首字母是大写,那这些标示符是可以被导出的,也就是说可以在包以外直接使用。
$GOPATH :环境变量(指向一个或多个目录),以及其子目录 src 目录的,当我们使用 import 关键字导入包的时候,Go 语言会在 $GOPATH 和 GOROOT 目录中搜索包。
创建并使用自定义包
源文件 注意点:
- go文件名和文件夹名并没有关系,文件名可以是任意的,文件定义的
package才是标识- 方法定义一定得是首字母大写
- 自定义包不能和导入处于同级目录,必须建一个文件夹存放自定义包
先看一下目录结构,以下示例是导入两包,一个是add,一个是simpleinterest
│ go.mod
│ main.go
│ README.md
│
├─add
│ add.go
│
└─simpleinterest
simpleinterest.go步骤说明
1 创建package文件夹
mkdir package
go mod init packagetest执行上述命令后,会生成 go.mod 文件,内容如下所示
module packageTest
go 1.202 创建各个文件
main.go
package main
import (
"fmt"
"log"
"packageTest/add" //导入 add 包 这个包必须放在$GOPATH下才可
"packageTest/simpleinterest"
)
var p, r, t = 5000.0, 10.0, 1.0
/*
* init function to check if p, r and t are greater than zero
*/
func init() {
println("Main package initialized")
if p < 0 {
log.Fatal("Principal is less than zero")
}
if r < 0 {
log.Fatal("Rate of interest is less than zero")
}
if t < 0 {
log.Fatal("Duration is less than zero")
}
}
func main() {
c := add.Add(1, 2) //调用 add 包中的 add 函数
si := simpleinterest.Calculate(p, r, t) // 调用 simpleinterest 包的 Calculate 函数
fmt.Println(c)
fmt.Println("Simple interest is", si)
}simpleinterest/simpleinterest.go
package simpleinterest
import "fmt"
/*
* init function added
*/
func init() {
fmt.Println("Simple interest package initialized")
}
//Calculate calculates and returns the simple interest for principal p, rate of interest r for time duration t years
func Calculate(p float64, r float64, t float64) float64 {
interest := p * (r / 100) * t
return interest
}
add/add.go
package add
func Add(a int, b int) (num int) {
return a + b
}3 执行并调试
输出如下所示
Main package initialized
Simple interest package initialized
3
Simple interest is 500