前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习Go语言-组织源码文件

学习Go语言-组织源码文件

原创
作者头像
jerryteng
修改2018-09-29 10:50:37
8930
修改2018-09-29 10:50:37
举报
文章被收录于专栏:jerryteng的专栏jerryteng的专栏

上一节我们讲到go语言的工作区和GOPATH,这一节来说说代码文件的组织。

image.png
image.png

代码文件

代码文件分为: 命令代码文件,库代码文件和测试代码文件。

go命令文件

  • 命令代码文件,这是程序的运行入口,是每个可独立运行的程序必须拥有的。
  • 如果一个源码文件声明属于 main 包,并且包含一个无参数声明且无结果声明的 main 函数,那么就是命令源码文件
  • go的命令行功能一般都会结合flag包作为参数输入,flag包可以解析多种类型的数据,包括: int(int|int64|uint|uint64), float(float|float64) string, bool, duration(时间), 当然也可以自定义数据类型,如果想用flag包接收自定义的数据类型,那就需要使用flag.var(),关键点在于需要实现flag包的Value接口。

go库文件

  • 把一些代码单独拿到别的文件里面来存放,定义一个不同的包名,这样就形成了库文件,其实就是实现了一些使用库。
  • 如果是在跟命令文件统一个目录,也需定义为 main包,只是不能再有无参数声明且无结果声明的 main 函数了。

测试代码文件

测试代码分为 单元测试和 性能测试,

  • 含有单元测试代码的go文件必须以_test.go结尾,_test.go前面的部分最好是被测试的方法所在go文件的文件名,比如文件是xxx.go,那么测试文件是xxx_test.go
  • 单元测试的函数名必须以Test开头,是可导出公开的函数
  • 测试函数的签名必须接收一个指向testing.T类型的指针,并且不能返回任何值
  • 单元测试和性能测试的写法差不多

代码包声明的规则

  • 第一条规则,同目录下的源码文件的代码包声明语句要一致。如果目录中有命令源码文件,那么其他种类的源码文件也应该声明属于<code>main</code>包。
  • 第二条规则,源码文件声明的代码包的名称可以与其所在的目录的名称不同。在针对代码包进行构建时,生成的结果文件的主名称与其父目录的名称一致。
  • 要点:源码文件所在的目录相对于src目录的相对路径就是它的代码包导入路径,而实际使用其程序实体时给定的限定符要与它声明所属的代码包名称对应。
  • 包名最好跟目录名一致。
  • `internal` 代码包中声明的公开程序实体仅能被该代码包的直接父包及其子包中的代码引用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码文件
    • go命令文件
      • go库文件
        • 测试代码文件
          • 代码包声明的规则
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档