GO程序的结构
func main() { // 程序入口函数\nfunc add(a int, b int) int { // 自定义函数return a bmain()函数是程序执行入口func 函数名(参数) 返回值。
·
GO程序的结构
一个标准的GO程序包含以下核心组成部分:
1. 包声明(Package Declaration)
package main // 可执行程序必须声明为main包
- 每个GO源文件必须包含包声明
main
包表示可执行程序入口- 库文件使用自定义包名(如
package utils
)
2. 导入声明(Import Declaration)
import (
\ // 标准库导入
/rand\n .com/user/mylib // 第三方库导入
)
- 使用
import
关键字引入依赖包 - 支持分组导入(推荐)
- 未使用的导入会导致编译错误
3. 函数定义(Function Definition)
func main() { // 程序入口函数
fmt.Println(Hello, GO!\n
func add(a int, b int) int { // 自定义函数
return a b
}
main()
函数是程序执行入口- 函数签名:
func 函数名(参数) 返回值
- 支持多返回值:
func swap(a, b int) (int, int)
4. 类型声明(Type Declaration)
type Point struct { // 结构体定义
X, Y float64
}
type Calculator interface { // 接口定义
Add(int) int
}
- 使用
type
关键字定义新类型 - 支持结构体、接口、函数类型等
5. 变量与常量(Variables & Constants)
const PI = 3.1415 // 常量声明
var globalVar int // 包级变量
func example() {
localVar := 42 // 局部变量(短声明)
msg := GO \
- 常量使用`const`声明
- 变量使用`var`或短声明`:=`
- 类型可显式声明或自动推断
#### 6. 控制结构(Control Structures)
```go
if x > 0 { // 条件语句
fmt.Println(Positive\n
for i := 0; i < 5; i { // 循环语句
fmt.Println(i)
}
switch os := runtime.GOOS; os { // 选择语句
case win\n fmt.Println(macOS\ndefault:
fmt.Println(os)
}
- 无括号的
if/for/switch
语法 for
是唯一的循环关键字switch
支持表达式和类型匹配
完整示例程序
package main
import \ Shape interface {
Area() float64
}
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return 3.14 * c.Radius * c.Radius
}
func main() {
c := Circle{Radius: 5}
fmt.Printf(: %.2f\n
ea())
if c.Area() > 50 {
fmt.Println(Large circle\n}
关键特性
- 简洁性:无分号结尾,强制代码格式化(
gofmt
) - 并发模型:通过
goroutine
和channel
实现go func() { // 启动goroutine fmt.Println(Concurrent task()
- 错误处理:显式错误返回(非异常机制)
result, err := someOperation() if err != nil { log.Fatal(err) }
- 依赖管理:使用
go.mod
模块文件module example.com/myapp go 1.20 require github.com/lib/pq v1.10.7
典型文件结构
myapp/
├── go.mod // 模块定义
├── main.go // 入口文件
├── pkg/
│ └── utils/ // 内部包
│ └── math.go
└── internal/ // 私有包(仅限当前模块访问)
└── config.go
注意:GO程序通过
go build
编译为静态二进制文件,无需运行时环境
更多推荐
所有评论(0)