Go语言package(创建包)


本站和网页 http://c.biancheng.net/view/89.html 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Go语言package(创建包)
首页
教程
VIP会员
一对一答疑
辅导班
公众号
首页
C语言教程
C++教程
Python教程
Java教程
Linux入门
更多>>
目录
Go语言
Go语言简介
Go语言基本语法
Go语言容器
流程控制
Go语言函数
Go语言结构体
Go语言接口
8 Go语言包(package) 8.1 包的基本概念8.2 Go语言封装简介及实现细节8.3 Go语言GOPATH8.4 Go语言常用内置包8.5 Go语言自定义包8.6 Go语言package8.7 Go语言导出包中的标识符8.8 Go语言import导入包8.9 Go语言工厂模式自动注册8.10 Go语言单例模式8.11 Go语言sync包与锁8.12 Go语言big包8.13 示例:使用图像包制作GIF动画8.14 Go语言正则表达式:regexp包8.15 Go语言time包:时间和日期8.16 Go语言os包用法简述8.17 Go语言flag包:命令行参数解析8.18 Go语言go mod包依赖管理工具8.19 示例:使用Go语言生成二维码8.20 Go语言Context(上下文)8.21 示例:客户信息管理系统8.22 示例:使用Go语言发送电子邮件8.23 Go语言(Pingo)插件化开发8.24 Go语言定时器实现原理及作用
Go语言并发
10
Go语言反射
11
Go语言文件处理
12
Go语言编译与工具
首页 > Go语言 > Go语言包(package)
Go语言package(创建包)
包(package)是多个 Go 源码的集合,是一种高级的代码复用方案,像 fmt、os、io 等这样具有常用功能的内置包在 Go语言中有 150 个以上,它们被称为标准库,大部分(一些底层的除外)内置于 Go 本身。
包要求在同一个目录下的所有文件的第一行添加如下代码,以标记该文件归属的包:
package 包名
包的特性如下:
一个目录下的同级文件归属一个包。
包名可以与其目录不同名。
包名为 main 的包为应用程序的入口包,编译源码没有 main 包时,将无法编译输出可执行的文件。
任何包系统设计的目的都是为了简化大型程序的设计和维护工作,通过将一组相关的特性放进一个独立的单元以便于理解和更新,在每个单元更新的同时保持和程序中其它单元的相对独立性。这种模块化的特性允许每个包可以被其它的不同项目共享和重用,在项目范围内、甚至全球范围统一的分发和复用。
每个包一般都定义了一个不同的名字空间用于它内部的每个标识符的访问。每个名字空间关联到一个特定的包,让我们给类型、函数等选择简短明了的名字,这样可以避免在我们使用它们的时候减少和其它部分名字的冲突。
每个包还通过控制包内名字的可见性和是否导出来实现封装特性。通过限制包成员的可见性并隐藏包 API 的具体实现,将允许包的维护者在不影响外部包用户的前提下调整包的内部实现。通过限制包内变量的可见性,还可以强制用户通过某些特定函数来访问和更新内部变量,这样可以保证内部变量的一致性和并发时的互斥约束。
当我们修改了一个源文件,我们必须重新编译该源文件对应的包和所有依赖该包的其他包。即使是从头构建,Go语言编译器的编译速度也明显快于其它编译语言。Go语言的闪电般的编译速度主要得益于三个语言特性。
第一点,所有导入的包必须在每个文件的开头显式声明,这样的话编译器就没有必要读取和分析整个源文件来判断包的依赖关系。
第二点,禁止包的环状依赖,因为没有循环依赖,包的依赖关系形成一个有向无环图,每个包可以被独立编译,而且很可能是被并发编译。
第三点,编译后包的目标文件不仅仅记录包本身的导出信息,目标文件同时还记录了包的依赖关系。因此,在编译一个包的时候,编译器只需要读取每个直接导入包的目标文件,而不需要遍历所有依赖的的文件。
关注公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。本公众号由C语言中文网站长亲自运营,长期更新,坚持原创。
微信扫码关注公众号
优秀文章
C语言兔子生兔子问题
C语言带参数的宏定义
什么是单链表,链式存储结构详解
Linux懒人神器:命令自动补全功能!
MySQL通用查询日志(General Query Log)
HttpServletResponse接口详解
pluginManagement:管理Maven插件
Redis INCRBY命令
Pillow图片格式转换
Terraform介绍(非常详细)
精美而实用的网站,分享优质编程教程,帮助有志青年。千锤百炼,只为大作;精益求精,处处斟酌;这种教程,看一眼就倾心。
关于网站 |
关于站长 |
如何完成一部教程 |
公众号 |
联系我们 |
网站地图
Copyright ©2012-2022 biancheng.net, 冀ICP备2022013920号, 冀公网安备13110202001352号
加入微信交流群,一起学习不枯燥。内含一款搜索神器,免费下载全网书籍和视频。