美文网首页
09.手撕Go语言-包

09.手撕Go语言-包

作者: imsilence | 来源:发表于2019-06-26 21:42 被阅读0次

    包是函数和数据的集合,将有相关特性的函数和数据放在统一的文件/目录进行管理,每个包都可以作为独立的单元维护并提供给其他项目进行使用

    声明

    Go源文件都需要在开头使用package声明所在包,包名告知编译器哪些是包的源代码用于编译库文件,其次包名用于限制包内成员对外的可见性,最后包名用于在包外对公开成员的访问

    包名使用简短的小写字母,常与所在目录名保持一致,一个包中可以由多个Go源文件,但必须使用相同包名

    09.01.png

    声明两个包,路径分别为gpkgname/pkg01和gpkgname/pkg02

    导入&调用

    在使用包时需要使用import将包按路径名导入,再通过包名调用成员

    可通过import每行导入一个包,也可使用括号包含所有包并使用一个import导入

    09.02.png

    工作目录结构说明:

    • bin: 用于放置发布的二进制程序
    • pkg: 用于放置发布的库文件
    • src: 用于放置源代码

    运行:

    1. 将chapter08/gv目录添加到GOPATH环境变量中
    2. 编译&运行
      • 使用go build编译二进制文件

        命令:go build gpkgmain

        说明:编译路径gpkgmain下的包,main包,则在当前目录产生以pkgmain命名的二进制程序

      • 使用go run运行二进制文件

        命令:go run gpkgmain

      • 使用go install编译并发布二进制文件

        命令:go install gpkgmain

        说明:编译并发布路径gpkgmain下的包,main包,则在将编译后的以pkgmain命名的二进制程序拷贝到bin目录

      • 使用go install编译发布库文件

        命令:go install gpkgname/pkg01

        说明:编译并发布路径gpkgname/pkg01下的包,非main包,则在将编译的以包名命名的库文件拷贝到pkg/GOOS_GOARCH目录下

      • 使用go install编译发布所有二进制和库文件

        命令:go install ./…

        说明:编译并发布当前路径下的所有二进制程序和库文件

    注意:Go语言不允许交叉导入包

    导入形式

    1. 绝对路径导入

      在GOPATH目录中查找包

      示例:

      • import "fmt"
      • import "gpkgname/pkg01"
    2. 相对路径导入

      在当前文件所在的目录查找

      示例:import "./gpkgname/pkg02"

    3. 点导入

      在调用点导入包中的成员时可以直接使用成员名称进行调用(省略包名)

      09.03.png
    4. 别名导入

      当导入不同路径的相同包名时,可以别名导入为包重命名,避免冲突

      09.04.png
    5. 下划线导入

      Go不允许包导入但未使用,在某些情况下需要初始化包,使用空白符作为别名进行导入,从而使得包中的初始化函数可以执行

      09.05.png

    成员可见性

    Go语言使用名称首字母大小写来判断对象(常量、变量、函数、类型、结构体、方法等)的访问权限,首字母大写标识包外可见(公开的),否者仅包内可访问(内部的)

    09.06.png

    main包与main函数

    main包用于声明告知编译器将包编译为二进制可执行文件

    在main包中的main函数是程序的入口,无返回值,无参数

    init函数

    init函数是初始化包使用,无返回值,无参数。建议每个包只定义一个。init函数在import包时自动被调用(const->var->init)

    09.07.png 09.08.png 09.09.png

    标准包

    Go提供了大量标准包,可查看:https://golang.google.cn/pkg/

    godoc工具

    使用godoc命令可以在本地启动golang网站,用于本地查看帮助手册

    09.10.png

    帮助

    1. go list std:查看所有标准包

      09.11.png
    2. go doc packagename:查看包的帮助信息

      09.12.png
    3. go doc packagename.element:查看包内成员帮助信息

      09.13.png

    相关文章

      网友评论

          本文标题:09.手撕Go语言-包

          本文链接:https://www.haomeiwen.com/subject/haohcctx.html