Golang中package/import的使用
最近入坑了Golang对package的使用很是疑惑,在网上看到了一个很好的文章解释。刚刚看完我记录一下以免忘记。
首先我们用go mod来创建一个项目,具体怎么创建我就不写了(毕竟本篇内容不是介绍go mod的)。项目树状图如下:
1 | ├ Project 项目文件 |
Package的使用
在一个go的项目中一般需要一个main包,并且这个main包只能有一个。而我们想调用别的go文件中的代码就需要使用到包(package)这个东西。如果你学过C语言的话你可以理解为用户自定义的库文件,我们可以直接调用。而go语言的一个包的代码都应该写在一个目录下,且一个包中可以有多个文件。
我们来定义一个自定义的包叫Hello.go
存放在工程目录的pake
文件夹下,源码如下:
1 | package pake |
在我们自定义的包中,package后所跟的应为包所处文件夹的名称,比如这个Hello.go
是包含在pake
这个文件夹中,所以我们package后跟pake
。
import的使用
最后我们写一个main包来调用这个包。源码如下:
1 | package pake |
go mod定义的项目导入包,写从工程文件夹到包所处的文件夹的路径即可,比如我们的Hello这个包就在工程文件夹Project的pake文件夹中,所以我们写做Project/pake
跑了一下程序成功输出了Hello world!
说明成功的导入了。
然而导入的操作还不止这一种操作,以下我们来说一下几种其他的操作:
定义别名
1 | package pake |
这种导入方式可以用来省懒,如果包名太长就可以自定义一下。
点导入
1 | package pake |
用.来导入的话可以直接将包中的方法注册到当前的包中,用是可以直接调用不用在前面写包名前缀
下划线引用
1 | package pake |
_ 是包引用操作,只会执行包下各模块中的 init 方法,并不会真正的导入包,所以不可以调用包内的其他方法。
所以我们这一段代码会报错!!!