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

你可能感兴趣的:(Go语言-源码文件)