《Go程序设计语言》- 第10章:包和go工具

前言

本专栏是笔者在学习《Go程序设计语言》这本书时,对每个章节认为较为重要容易忘记👻)的知识点记录的笔记,其中也会有少量的思考👀, 现整理成博客分享出来。

如果对专栏感兴趣,跑过去看一眼,书中的每一章都有:《Go程序设计语言》笔记

❗️注意❗️:本专栏不是详细的知识讲解,只是碎片的知识条目,或可作为Go知识点查漏补缺的小工具~

引言

  1. 任何包管理系统的目的都是通过对关联的特性进行分类,组织成便于理解和修改的单元,使其与程序的其它包保持独立;模块化允许包的复用;
  2. Go程序编译比较快,原因有三:
    • 所有导入文件都需要在包开头显式列出,这样编译器确定依赖时就不需要读取完整文件
    • 包的依赖形成有向无环图,所以包可独立甚至并行编译
    • 包输出文件不仅包含自己的导出信息,还记录它所依赖包的导出信息;

导入路径

  1. Go语言规范没有定义字符串如何确定一个包的导入路径,它通过工具来解决这些问题;
  2. 对于准备共享的包,其导入路径需要全局唯一
  3. 除了标准库中的包,其它包一般以互联网域名作为开始,便于查找;

包的声明

  1. 通常包名是导入路径的最后一段;所以路径不同的包可能包名相同;如html.templatetext.template
  2. 最后一段的例外:
    • 如果包定义了一条命令(可执行的Go程序),则包名必须为main
    • 文件如果以_test.go结尾,则包名中会出现_test结尾;
    • 包名不包含版本号后缀,如:gopkg.in/yaml.v2;包名为yaml

导入声明

  1. gofmtgoimports会自动对导入包进行分组和排序;通常按照字母顺序;
  2. 如果导入两个同名包,需要为其中一个命名;
  3. 如果依赖形成了循环,则go build工具会报错;

空导入

  1. import _ "xxx":导入xxx包,但不显式使用;如:

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

包及其命名

  1. 创建一个包时,采用简短的名字,如http、fmt、ioutl等;

go工具

  1. go工具可用来:下载、查询、格式化、构建、测试、安装Go代码包;
  2. go env查看、设置环境变量,常见环境变量:
    1. GOOS:目标操作系统;
    2. GOARCH:目标架构;
    3. GOPATH:第三方包下载路径,或是老式包组织方法使用的目录;
    4. GOROOT:一般为Go的安装目录;
  3. go get下载单一的包;
  4. go install安装一个Go包,编译后保存在GOPATH/pkg中,可执行的命令保存在GOPATH/bin中;
  5. 包声明之前的注释被认为是整个包的注释,通常只能有一个;
  6. go doc输出在命令行上指定的内容的声明和整个文档注释;可以go doc timego doc time.Since等;
  7. go list pkgname查询是否包含该包,包含则输出位置;

如有错误 ❌ ,欢迎指正 ☝️~

如有收获 🍗,可以考虑点赞👍/评论💬/收藏⭐️/关注👀,大家共同进步~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值