go之包
包的创建和管理
go path模式(已经弃用)
1、go mod 出现之前,所有的代码都要放在go path的src路径下
2、go env可以看到go path,/Users/liuqingzheng/go 有三个文件夹
-src:存放代码,项目,第三方包,自己写的包都要放在这
-bin:编译后的文件放在这,下载的第三方可执行文件放在这,已经被加入环境变量了
-pkg:编译过程中产生的中间文件存放路径
3、如果项目不放在go path路径下,项目执行不了,导入包也导入不成功
go mod模式(主流)
1、1.11后官方出现,1.13后作为标准了,的一种包管理方式
2、项目可以放在任意路径下,都可以运行,包一般放在项目中,可以下载并使用第三方包
3、不同的项目:第三方包单独用自己的,不会出现混乱
使用
-go mod init // 初始化---》执行它以后,项目根路径会有go.mod文件(使用goland直接创建,就有了)
-go mod tidy // 清理优化第三方包,把go mod中的不使用的包删除,使用的下载下来
包的分类
包分为自定义的包和第三方的包
自定义的包
1、在项目路径下新建一个文件夹即可
2、在文件夹中新建go文件,每个go文件的第一句,都是声明包
--默认生成的包名就是文件夹的名字(可以改,但是不推荐)
3、在当前文件夹下的所有go文件,都必须属于同一个包
--所有go文件的包名都必须一致,如果不一致就报错
4、在文件夹下如果再建文件夹,表示又新建了个包,跟外层的包,没有必然的联系
包的使用
1、在包中定义变量,定义函数,给其他包使用
2、大写字母开头,表示导出字段
--注意:只有大写字母开头的变量或函数才能被其他包使用
3、如果小写字母开头,表示只给包内部使用(好比python面向对象中隐藏数据或方法)
4、只要是同一个包下,所有的变量函数都是共享的,相当于在同一个go文件中
具体使用
导入包:import 文件的绝对路径
根据包名使用:包名(go文件名) . 函数名
go中包管理的其他
导入多个包可以使用
import ( "fmt" "go_day03_demo/utils" )
在任意包中,都可以写多个函数 init ,没有参数,没有返回值,只要包一导入,就会执行它,执行顺序是从上往下执行
这样的作用:可以把一些初始化的一些操作放里面
只导入包,不使用
因为导入包会执行init,就只想让包内容初始化,但是不用包中的变量
_ "go_day03_demo/utils"
导入包,给包重命名
pk1 "go_day03_demo/package1"
以后使用pk1就可以