Skip to content

第 3 章:第一个 Go 程序详解

3.1 Go 程序的基本结构

一个基本的 Go 程序由以下几个部分组成:

1. 包声明

go
package main
  • package 关键字用于声明包名
  • main 包是特殊的包,表示这是一个可执行程序
  • 每个 Go 文件都必须属于一个包

2. 导入包

go
import "fmt"
  • import 关键字用于导入其他包
  • fmt 包是标准库中的格式化输入输出包
  • 可以导入多个包,使用括号包围:
    go
    import (
        "fmt"
        "math"
    )

3. 主函数

go
func main() {
    fmt.Println("Hello, Go!")
}
  • func 关键字用于声明函数
  • main 函数是程序的入口点
  • 主函数没有参数和返回值
  • 函数体由花括号 {} 包围

3.2 编译与运行 Go 程序的两种方式

方式 1:直接运行

使用 go run 命令直接运行 Go 程序,无需编译成可执行文件:

bash
go run main.go
  • 适合开发调试阶段
  • 每次运行都会重新编译

方式 2:编译后运行

  1. 使用 go build 命令编译 Go 程序:

    bash
    go build main.go
  2. 运行生成的可执行文件:

    • Windows:main.exe
    • Mac/Linux:./main
  • 适合生产环境部署
  • 编译一次,多次运行

3.3 Go 命令速查

常用 Go 命令

命令功能示例
go run直接运行 Go 程序go run main.go
go build编译 Go 程序go build main.go
go fmt格式化 Go 代码go fmt main.go
go test运行测试go test ./...
go get下载依赖包go get github.com/gin-gonic/gin
go mod管理依赖go mod init project
go version查看 Go 版本go version
go env查看 Go 环境变量go env

3.4 新手常见错误

1. 大小写问题

Go 语言中,标识符的大小写决定了其可见性:

  • 大写字母开头:公开的,可以被其他包访问
  • 小写字母开头:私有的,只能在当前包内访问

错误示例

go
package main

import "fmt"

func main() {
    fmt.println("Hello, Go!") // 错误:println 应该是 Println
}

2. 分号问题

Go 语言会自动添加分号,不需要手动添加:

错误示例

go
package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!"); // 错误:不需要分号
}

3. 包名问题

  • 可执行程序的包名必须是 main
  • 库文件的包名通常与目录名相同

错误示例

go
package myapp // 错误:可执行程序必须使用 main 包

import "fmt"

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

4. 导入未使用的包

Go 语言不允许导入未使用的包:

错误示例

go
package main

import (
    "fmt"
    "math" // 错误:导入了未使用的包
)

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

5. 变量声明未使用

Go 语言不允许声明未使用的变量:

错误示例

go
package main

import "fmt"

func main() {
    var name string // 错误:声明了未使用的变量
    fmt.Println("Hello, Go!")
}

6. 函数参数和返回值

  • 函数参数需要指定类型
  • 函数返回值需要指定类型

错误示例

go
package main

import "fmt"

func add(a, b) int { // 错误:参数需要指定类型
    return a + b
}

func main() {
    fmt.Println(add(1, 2))
}

7. 括号位置

Go 语言的括号位置有严格要求:

错误示例

go
package main

import "fmt"

func main() // 错误:左括号必须与函数名在同一行
{
    fmt.Println("Hello, Go!")
}

3.5 代码风格建议

  1. 缩进:使用 4 个空格进行缩进
  2. 命名:使用驼峰命名法
  3. 注释:使用 // 进行单行注释,/* */ 进行多行注释
  4. 空行:在函数之间、逻辑块之间使用空行
  5. 长度:每行代码长度不超过 80 个字符

使用 go fmt 命令可以自动格式化代码,保持一致的代码风格。

© 2026 编程马·菜鸟教程 版权所有