欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2023/12/2 编程问答 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 《Go程序设计语言》- 第10章:包和go工具 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目录

    • 前言
    • 引言
    • 导入路径
    • 包的声明
    • 导入声明
    • 空导入
    • 包及其命名
    • go工具

前言

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

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

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

引言

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

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

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

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

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

    import(_ "github.com/go-sql-driver/mysql""github.com/jmoiron/sqlx" )
  • 包及其命名

  • 创建一个包时,采用简短的名字,如http、fmt、ioutl等;
  • go工具

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

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

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


    总结

    以上是生活随笔为你收集整理的《Go程序设计语言》- 第10章:包和go工具的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。