第18节 Go中的包使用

41 阅读2分钟

Go中的每一个文件都应该有自己的包,也就是说Go中以包的形式来管理文件和项目的目录结构的。Go中包的三大作用

  • 区分相同名字的函数、变量等标识符
  • 当程序文件很多时,可以很好的管理项目
  • 控制函数、变量等访问范围,即作用域

1. 包的语法

1.1 打包语法

package 包名

2.1 引入包

import 包的路径

2. 包的使用案例

image.png

  • 工具包文件
    src/go-code/chapter-05/package-demo/utils/calculate.go
package utils

import (
	"fmt"
)

// 实现加减乘除四则运算
func Cal(n1 float64, n2 float64, operator byte) float64 {

	var result float64
	switch operator {
		case '+' :
			result = n1 + n2
		case '-' :
			result = n1 - n2
		case '*' :
			result = n1 * n2	
		case '/' :	
			result = n1 / n2
		default :
			fmt.Println("输入有误 ...")	
	}
	return result 
}
  • 入口文件
    src/go-code/chapter-05/package-demo/main/main.go
package main 

import (
	"fmt"
	"go-code/chapter-05/package-demo/utils"
)

func main() {
	n1 := 10.0
	n2 := 1.2 
	var operator byte = '-'
	
	result := utils.Cal(n1, n2, operator)
	fmt.Println("计算结果=", result)
}

2.1 使用细节

  • 给一个文件打包时,跑名称就是文件夹的名称。比如 src/go-code/chapter-05/package-demo/utils/calculate.go 的包名就是 utils
  • 当在一个文件中要使用其它包中的函数和变量时,需要先引入对应的包
import "包名"

import (
	"包名"
	"包名"
)
  • 引入包时,不用带 src,编译器会自动从src下开始引入
  • 为了让其他包可以访问到本包的函数、变量,则该函数、变量首字母必须大写
  • 引入包时,支持给包取别名;取别名后,原来的包名就不能使用
package main 

import (
	"fmt"
	util "go-code/chapter-05/package-demo/utils"
)
  • 同一个包下,不能有相同的函数名、全局变量名,否则编译报错

image.png

比如在 utils 包定义了 calculate.gotest.go ,在这两个文件中都定义了 func Cal() 方法,此时编译就会报错

image.png

2.2 项目目录结构

image.png

  • bin 是编译后生成的可执行文件,这里我们在编译的时候指定了文件目录和文件名称
# go-projects/src/book-mall 目录下执行该命令
go build -o bin/start  main.go

# 如果是 windows 系统
go build -o bin/start.exe  main.go