包(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"
)