包(package)是Go语言中实现代码复用的重要手段。包的存在可以让我们只关心包中的有用的函数。

Go语言自带100多个标准包,这些包使Go语言用起来便捷,进行服务器端、Web端编程几乎不需要第三方框架就可以开发。

可依据函数、接口、方法之间的关联性来对包进行划分,关联性高的功能会放在一个包内,便于理解和后续修改维护。这种模块化特性,允许我们在不同的项目内甚至世界范围内共享和复用代码。

指定编译的速度快是Go语言的优势:

导入方便 : 每个源码文件用到的导入文件都在开头显式地列出来,这样编译器就不需要遍历文件查找。
避免循环引用 : Go语言避免循环引用,也就是说引用都是有向无环的引用。
编译速度快 : Go语言编译输出的目标文件不仅记录自己的导出信息,也记录依赖包的导出信息,所以在一个包内很快可以编译整个包的文件。

1.1、导入包的几种方式

GO语言中每个包在项目中都有一个唯一的导入路径,这个导入路径是使用唯一的字符串进行标识的。
一般包名默认会使用路径最后一个"/"后的名称,比如:math/rand,包名就是rand。

第一种导入方式:

import "fmt"
import "os"

第二种导入方式:

import(
	"fmt"
	"os"
)

注意:为了提高编译的速度,导入的包必须在程序内用到,否则编译无法通过。

第三种导入方式:
出现不同路径下包名相同的情况,需要起别名:

import(
	"math/rand"
	crand "crypto/rand"
)

对于不同路径相同的包,我们对其进行起别名。但该别名仅在当前文件中有效。

第四种导入方式:
如果要用的包内函数名不会与其他包重复,也可以在引用的使用使用”." ,这样使用该函数就不用通过前置包名来调用了。

import ."fmt"

这样导入的好处就是我们可以直接使用该包内的函数,比如:直接使用 Println()

第五种导入方式:
该种导入方式是一种空导入,导入的目的是仅仅需要这个包执行init函数。init是编译的时候进行调用,其他的函数又都用不到。

import(
	"database/sql"
	_"github.com/go-sql-driver/mysql"
)