Golang学习之路—包的使用详解

包的引出

  1. 在实际开发中,我们往往需要在不同文件中,去调用其它文件的定义函数,比如main.go中,去使用utils.go文件中的函数。如何实现?->包。
  2. 现在有两个程序员共同开发一个Go项目,程序员A希望定义函数Cal,程序员B也想定义函数也叫Cal。两个程序员为此还吵了起来,怎么办?->包。

包的原理图

包的本质实际上就是创建不同的文件夹,来存放程序文件。

包的基本概念

go的每一个文件都是属于一个包的,也就是说go是以包的形式来管理文件和项目目录结构的。

包的三大作用

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

包的相关说明

打包基本语法

package 包名

引入包的基本语法

import “包的路径”

包使用的快速入门

包快速入门:相互调用函数,将func Cal定义到文件utils.go中,将utils.go放到一个包中,当其它文件需要使用utils.go的方法是,可以import该包,就可以使用了。

代码演示:
在这里插入图片描述
utils.go文件

package utils

import(
	"fmt"
)
func Cal(n1 int,n2 int, operator byte) int{
    
    
	var res int
	switch operator {
    
    
	case '+':
		res = n1 + n2
	case '-':
		res = n1 - n2
	case '*':
		res = n1 * n2
	case '/':
		res = n1 / n2	
	default:
		fmt.Println("操作符号错误!")
		
	}
	return res
}

main.go文件

package main

import(
	"fmt"
	//导入包,从src下开始引入
	"go_code/day4/utils"
) 

func main()  {
    
    
	var n1 int = 10
	var n2 int = 20
	var operator byte = '+'
	//调用Cal函数
	res := utils.Cal(n1,n2,operator)
	fmt.Println("result =",res)
}

运行结果:
在这里插入图片描述

包使用的注意事项

  1. 在给一个文件打包时,该包对应一个文件夹,比如这里的utils文件夹对应的包名就是utils,文件的包名通常和文件所在的文件夹名一致,一般为小写字母。
  2. 当一个文件要使用其它包函数或变量时,需要先引入对应的包。
    引入方式1:import "包名”
    引入方式2:import(
    “包名1”
    "包名2”
    )
    package 指令在文件第一行,然后是import指令。
    在import包时,路径从$GOPATH的src下开始,不用带src,编译器会自动从src下开始引入。
  3. 为了让其它包的文件,可以访问到本包的函数,则该函数名的首字母需要大写,类似其它语言的public,这样才能跨包访问。
  4. 在访问其它包函数,变量时,其语法是 包名.函数名
  5. 如果包名较长,Go支持给包取别名,注意细节:取别名后,原来的包名就不能使用了。
package main

import(
	"fmt"
	//取别名为util,原来的包名utils不能使用,否则报错,只能使用util
	util "go_code/day4/utils"
) 

func main()  {
    
    
	var n1 int = 10
	var n2 int = 20
	var operator byte = '+'
	//调用Cal函数
	res := util.Cal(n1,n2,operator)
	fmt.Println("result =",res)
}
  1. 在同一包下,不能有相同的函数名,也不能有相同的全局变量名,否则报重复定义的错误。
  2. 如果要编译成一个可执行程序文件,就需要将这个包声明为main,即package main,这个就是一个语法规范,如果是写一个库,包名可以自定义。

猜你喜欢

转载自blog.csdn.net/weixin_44736475/article/details/113921956