Go语言使用包作为句子元素来组织源代码。 所有句子的可见性都是在包级别定义的。 与 Java、Python 等语言相比,这算不上什么创新,但它与 C 传统的 include 相比,却变得“先进”了很多。
我的博客
├── 会议
│ └── 应用程序.conf
├── 控制器
│ ├── aboutme_controller.go
│ ├── add_article_controller.go
│ ├── album_controller.go
│ ├── base_controller.go
│ ├── 默认.go
│ ├── 删除_文章_控制器.go
│ ├── exit_controller.go
│ ├── home_controller.go
│ ├── 登录控制器.go
│ ├── register_controller.go
│ ├── show_article_controller.go
│ ├── tag_controller.go
│ ├── update_article_controller.go
│ └── upload_controller.go
├── main.go
├── 型号
│ ├── album_model.go
│ ├── 文章_model.go
│ ├── home_model.go
│ ├── tag_model.go
│ └── user_model.go
├── 我的博客网
├── 路由器
│ └── router.go
├── 静态
│ ├── CSS
│ │ ├── blogsheet.css
│ │ └── 库
│ │ ├── 高亮.css
│ │ └── 登录.css
│ ├── img
│ ├── js
│ │ ├── blog.js
│ │ ├── 库
│ │ │ ├── jquery-3.3.1.min.js
│ │ │ └── jquery.url.js
│ │ └── reload.min.js
│ └── 上传
│ └── img
│ └── 2018
│ └── 12
│ └── 11
│ ├── 1544511378-bee2.png
├── 测试
│ └── default_test.go
├── 实用工具
│ ├── myUtils.go
│ └── mysqlUtils.go
└── 观点
├── aboutme.html
├── 专辑.html
├── 方块
│ ├── home_block.html
│ └── nav.html
├── home.html
├── 索引.tpl
├── 登录.html
├── 注册.html
├── show_article.html
├── 标签.html
└── write_article.html
Go语言的源码复用是建立在包的基础上的。 打包是通过package、import、GOPATH操作完成的。
1.主包
Go语言入口点main()函数所在的包(package)称为main。 如果主包想要引用其他代码,就需要导入导出!
2. 包装
src目录以代码包的形式组织和保存Go源码文件。 每个代码包都与src目录下的文件夹一一对应。 每个子目录都是一个代码包。
代码包的名称和文件目录的名称不要求一致。 例如,文件目录名为hello,但代码包的名称可以声明为“main”,但同一目录下的源代码文件第一行声明的包必须相同!
在同一目录下所有.go文件的第一行添加包定义,标记该文件所属的包jquery 获取 url,演示句型:
软件包 软件包名称 COPY
包裹必须满足:
同一包下的文件属于同一个工程文件,无需导入包即可直接使用
包可以嵌套定义,对应嵌套目录,但包名要和所在目录一致,例如:
// 文件:qf/ruby/tool.go
封装红宝石
// 可以导入的函数
函数 FuncPublic() {
// 无法导入的函数
函数 funcPrivate() {
}复制
包中,是否可以导入是通过标识符首字母是否小写来决定的。 只能导入小写字母缩写,它们被视为公共资源。
3. 导入
要引用其他包,可以使用import关键字,可以单独导出,也可以批量导出。 语法演示:
答:通常是出口的
// 单一导出
导入“包”
// 批量导出
进口 (
“包1”
“包2”
)复制
B:点操作
我们有时会听到以下几种导出包的方法
进口(
。 “FMMT”
) 复制
这个点操作的意思是,包导出后,调用这个包的函数时,可以省略带前缀的包名,即上面你调用的
使用的 fmt.Println("hello world") 可以省略,写成 Println("hello world")
C:别名
别名操作顾名思义,我们可以给包命名另一个我们常用的、容易记住的名字。 导入时,可以为包定义一个别名,语法演示:
进口 (
p1“包1”
p2“包2”
// 使用:别名操作时,前缀就成为我们调用包函数时的前缀
p1.Method()复制
D:_操作
如果导出包时只需要进行初始化操作,则不需要使用包中的其他函数、常量和其他资源。 然后你就可以匿名导出包了。
这个操作往往是让很多人迷惑的一个操作符。 请参阅下面的导入:
进口 (
“数据库/sql”
_“github.com/ziutek/mymysql/godrv”
) 复制
_操作虽然是引入包,但它并不直接使用包上的函数,而是调用包上的init函数。 也就是说,使用逗号作为包的别名只会执行 init()。
导入包的路径名可以是相对路径,也可以是绝对路径。 建议使用绝对路径(从项目根目录开始)。
4.GOPATH环境变量
import导出时,会从GO安装目录(即GOROOT环境变量设置的目录)和GOPATH环境变量设置的目录中检索src/package来导出包。 如果不存在,则导出失败。
GOROOT是GO的外部包所在的位置。
GOPATH是我们自己定义的包的位置。
通常我们开发Go项目的时候,在调试或者编译构建的时候jquery 获取 url,需要设置GOPATH指向我们的项目目录,并且可以导出该目录下的src目录下的包。
发表评论