概述:Go 创建并使用本地包

[toc]

是各种类型和函数的集合。在包中,如果标示符(类型名称,函数名称,方法名称)的首字母是大写,那这些标示符是可以被导出的,也就是说可以在包以外直接使用。

$GOPATH :环境变量(指向一个或多个目录),以及其子目录 src 目录的,当我们使用 import 关键字导入包的时候,Go 语言会在 $GOPATHGOROOT 目录中搜索包。

创建并使用自定义包

源文件 注意点:

  1. go文件名和文件夹名并没有关系,文件名可以是任意的,文件定义的package 才是标识
  2. 方法定义一定得是首字母大写
  3. 自定义包不能和导入处于同级目录,必须建一个文件夹存放自定义包

先看一下目录结构,以下示例是导入两包,一个是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.20

2 创建各个文件

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