从第8节开始的接下来几章节,将会对 go 的程序结构方面的知识进行详解
一、程序结构
1. 包结构
在 go 语言的运行程序当中,少不了类似于 C/C++ 的 main 函数的入口; 而在 go 语言当中,其程序运行的起来为 main 包, 而 main 函数是不可缺少的一部分:
以下是一个完整的 go 程序结构分析如下:
package main // 声明的 main 包, 它指明了当前 xx.go 文件属于某个包
import "fmt" // 引入的其他包,需要在程序运行前,加载其他包之间的依赖关系
const freezingF, boilingF = 32.0, 212.0 // 包一级变量对包外不可见
// const Zero = 0 // 包一级变量,对外包外可见
func main() { // 程序的入口
fmt.Printf("%g F = %g C\n", freezingF, fToC(freezingF))
fmt.Printf("%g F = %g C\n", boilingF, fToC(boilingF))
}
func fToC(f float64) float64 { // 包一级函数 对外不可见
return (f - 32) * 5 / 9
}
分析:
一个 xx.go 文件分为三个部分组成
- 包声明:必须存在
- import 依赖库:若引用了包,就必须使用,不然会用编译报错
- 包函数: 包中定义的函数
2. 可见性
包级别的函数或者变量,都有对包外的可见性选择,如果其名字的首个字母是大写那么将会对包外可见,如果起名字的首个字母不是大写那么仅仅只是在包内可见。这类似于 C/C++ 当中的 xx.cpp 文件,若要对其他模块可见, 需要使用 extern 关键字加以修饰,并通过头文件包含而对其他模块可见.。
package hello
var integer int = 250 // 包内可见,包外不可见
var Integer int = 250 // 包内可见,包外可见
func println() { // 包内可见,包外不可见
}
func Println() { // 包内可见,包外可见
}
总结
- go 程序结构
- 函数变量的包的可见性