Go语言-源码文件

Go语言的每个工作区中都会有以代码包为基本组织形式的源码文件。这里的源码文件又分为三种,即:命令源码文件、库源码文件和测试源码文件,它们都有着不同的用途和编写规则。

命令源码文件

命令源码文件是程序的运行入口,是每个可独立运行的程序必须拥有的。我们可以通过构建或安装,生成与其对应的可执行文件,后者一般会与该命令源码文件的直接父目录同名。

如果一个源码文件声明属于main包,并且包含一个无参数声明且无结果声明的main函数,那么它就是命令源码文件。 就像下面这段代码:

package main

import "fmt"

func main() {
  fmt.Println("Hello, world!")
}

如果把这段代码存成 demo1.go 文件,那么运行go run demo1.go命令后就会在屏幕(标准输出)中看到Hello, world!

当需要模块化编程时,我们往往会将代码拆分到多个文件,甚至拆分到不同的代码包中。但无论怎样,对于一个独立的程序来说,命令源码文件永远只会也只能有一个。如果有与命令源码文件同包的源码文件,那么它们也应该声明属于main包。

命令源码文件总结

  • 程序的独立入口
  • 属于main包,包含无参数无结果的main函数
  • 可通过go run命令运行,可接收命令行参数
  • main函数执行的结束就意味着当前程序运行的结束
  • 同一个代码包中不要放多个命令源码文件
  • 命令源码文件与库源码文件也不应该放在同一个代码包中
  • 构建后生成可执行文件,生成位置在命令执行目录
  • 安装后生成可执行文件,生成位置在当前工作区的bin子目录

库源码文件

库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话)。

这里的“其他代码”可以与被使用的程序实体在同一个源码文件内,也可以在其他源码文件,甚至其他代码包中。

--那么程序实体是什么呢?在 Go 语言中,程序实体是变量、常量、函数、结构体和接口的统称。
--我们总是会先声明(或者说定义)程序实体,然后再去使用。
--程序实体的名字被统称为标识符。标识符可以是任何 Unicode 编码可以表示的字母字符、数字以及下划线“_”,但是其首字母不能是数字。
--从规则上说,可以用中文作为变量的名字。但是,这种命名方式非常不好,应该在开发中明令禁止这种做法。作为一名合格的程序员,我们应该向着编写国际水准的程序无限逼近。

库源码文件总结

  • 专门用于放置可供其他代码使用的程序实体
  • 构建后只在操作系统的临时目录下生成临时文件(开发者可不关心)
  • 构建作用在于检查和验证
  • 安装后生成归档文件,扩展名为“.a”的文件,即为静态链接库文件
  • 归档文件生成位置在当前工作区的pkg子目录

测试源码文件

功能测试源码文件
  • 测试函数名称:TestXxx
  • 测试函数签名:(t *testing.T)
性能(基准)测试源码文件
  • 测试函数名称:BenchmarkXxx
  • 测试函数签名:(b *testing.B)
示例(样本)测试源码文件
  • 测试函数名称:ExampleXxx
  • 测试函数签名:<没有硬性要求>
  • 测试函数期望输出:放置在函数末尾,用注释行表示,形如//Output:xxx
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 明早的车,但是还没走订票,这一年的所有计划都被一个人打乱。怨,恨?都没有,有的只是浅浅的苦笑,然后对周围的人说,姐...
    阿四谈情阅读 1,787评论 0 1
  • 有鲠在喉第一天。 不能一边说话一边吃饭,特别是不能一边说话一边吃鱼。 我就是这样被卡住的。 虽然对于我吃小鲫鱼这个...
    又又姑娘阅读 4,457评论 8 1

友情链接更多精彩内容