Go - 19 Go 包
包的引出:
1.在实际开发中,我们往往需要在不同的文件中,去调用其他文件的定义的函数,比如main.go 中去使用 utils.go 文件中的函数,如何实现? --> 包
2.现在有两个程序员共同开发一个Go项目,程序员xiao 希望定义函数Cal, 程序员qiang 也想定义函数也叫Cal , 两个程序员为此还吵起来了怎么办?---> 包
包的原理:
包的本质实际上就是创建不同的文件夹,来存放程序文件;
包的基本概念:
go的每一个文件都属于一个包,也就是说go是以包的形式来管理文件和项目目录结构的;
包的三大作用:
1.区分相同名字的函数,变量等标识符;
2.当程序文件很多时,可以很好的管理项目;
3.控制函数,变量等访问范围,即作用域;
打包基本语法:
package util
引入包的基本语法:
import "包的路径" 从src下开始不包含src,只是引入到包,而真正使用的时候需要看函数所在.go文件的 package 后的名字使用
包的注意事项和细节:
1.文件的包名通常和文件所在的文件夹名一致,一般为小写字母;
2.package 指令在文件第一行,然后是import 指令;
3.在import 包时,路径从$GOPATH的 src下开始,不用带src,编译器会自动从src下开始引;
4.为了让其他包的文件,可以访问到本包的函数,则该函数名的首字母需要大写,类似其他语言的public,这样才能跨包访问;
5.在访问其他包函数时,其语法是:包名.函数名
6.如果报名较长,Go支持给包取别名,注意细节,取别名后,原来的包名就不能使用了;
7.在同一个包(文件夹)下,不能有相同的函数名(也不能有相同的全局变量名),否则报重复定义;
8.如果你要编译成一个可执行程序文件,就需要将这个包声明为 main,即package main 这个就是一个语法规范,如果你是写一个库,包名可以自定义;
具体说明:
1.编译的指令,在项目目录下,编译路径不需要带src,编译器会自动带;
2.编译时需要编译main包(package main)所在的文件夹;
3.项目的目录结构最好按照规范来组织;
4.编译后生成一个有默认名的可执行文件,在$GOPATH 目录下,可以指定名字和目录,比如:放在bin目录下,go build -o bin/my.exe go_code/goproject/main (没有bin目录回自动生成)