【golang - 关键词】package 、import
分类:
文章
•
2024-12-08 12:20:28
1. package
1.1 package特性
- 一个目录下的同级文件归属一个包。
- 包名可以与其目录不同名。
- 同目录文件,虽然package包名可与目录不同,但是所有的同目录文件必须是相同的包名
- 包名为 main 的包为应用程序的入口包,编译源码没有 main 包时,将无法编译输出可执行的文件。
2. import
2.1 import规则
- 标准库查找
import(
“fmt”
)
这个fmt是Go语言的标准库,是去GOROOT下去加载该模块
- 相对路径查找
import “./model” //当前文件同一目录的model目录,但是不建议这种方式import
- 绝对路径查找
import “shorturl/model” //加载GOPATH/src/shorturl/model模块
- 别名操作
import( f “fmt” ) 别名操作调用包函数时前缀变成了重命名的前缀,即f.Println(“hello world”)
- 点操作
import( . “fmt” ) 其中 . 的作用为:省略前缀的包名。
也就是前面你调用的fmt.Println(“hello world”) 可以省略的写成Println(“hello world”)
- _操作
import ( “database/sql” _ “github.com/ziutek/mymysql/godrv” )
_操作其实只是引入该包。当导入一个包时,它所有的init()函数就会被执行,但有些时候并非真的需要使用这些包,仅仅是希望它的init()函数被执 行而已。这个时候就可以使用_操作引用该包了。即使用_操作引用包是无法通过包名来调用包中的导出函数,而是只是为了简单的调用其init函数()。
- 批量导入
import (
“net/http”
“encoding/json”
“io/ioutil”
“bytes”
)
2.2 import初始化
- 当包里面有init函数时,包被导入第一时间会调用此函数。
- import初始化加载顺序如下图: