Skip to content
On this page

第一个 Go 程序

让我们从经典的 "Hello, World!" 程序开始,逐步了解 Go 程序的结构。

Hello World

创建文件 main.go

go
package main

import "fmt"

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

程序结构解析

包声明(Package Declaration)

go
package main
  • 每个 Go 文件都以 package 声明开头
  • main 包是特殊的,表示这是一个可执行程序
  • main 包通常是库代码

导入语句(Import Statement)

go
import "fmt"
  • import 用于导入其他包
  • fmt 是标准库中的格式化 I/O 包
  • 可以导入多个包:
go
import (
    "fmt"
    "os"
    "time"
)

主函数(Main Function)

go
func main() {
    // 程序入口点
}
  • main 函数是程序的入口
  • 每个可执行程序必须有且只有一个 main 函数
  • 程序从这里开始执行

函数调用

go
fmt.Println("Hello, World!")
  • fmt.Println 打印一行文本并添加换行
  • 支持多个参数:fmt.Println("Hello", "World")

运行程序

方法一:直接运行

bash
go run main.go

输出:

Hello, World!

方法二:编译后运行

bash
# 编译
go build -o hello main.go

# 运行
./hello

扩展程序

让我们创建一个更完整的示例:

go
package main

import (
    "fmt"
    "time"
)

func main() {
    // 获取当前时间
    now := time.Now()
    
    // 打印问候语
    fmt.Println("Hello, World!")
    fmt.Println("当前时间:", now.Format("2006-01-02 15:04:05"))
    
    // 打印 Go 版本
    fmt.Println("Go 版本:", "1.21")
    
    // 使用变量
    name := "Go 语言"
    year := 2009
    fmt.Printf("%s 诞生于 %d 年\n", name, year)
}

输出:

Hello, World!
当前时间: 2024-01-15 10:30:45
Go 版本: 1.21
Go 语言 诞生于 2009 年

代码格式化

Go 提供了自动格式化工具:

bash
# 格式化单个文件
go fmt main.go

# 格式化整个目录
go fmt ./...

格式化后的代码风格统一,提高可读性。

代码注释

go
// 单行注释

/*
多行注释
可以跨越多行
*/

// 包注释:描述包的功能
package main

// main 是程序的入口函数
func main() {
    // 打印问候语
    fmt.Println("Hello")
}

变量声明

go
package main

import "fmt"

func main() {
    // 方式1:完整声明
    var message string = "Hello"
    
    // 方式2:类型推断
    var count = 10
    
    // 方式3:短变量声明(只能在函数内使用)
    name := "World"
    
    // 方式4:多变量声明
    var a, b, c int = 1, 2, 3
    
    // 方式5:批量声明
    var (
        x int    = 10
        y string = "test"
        z bool   = true
    )
    
    fmt.Println(message, name)
    fmt.Println(count, a, b, c)
    fmt.Println(x, y, z)
}

常量声明

go
package main

import "fmt"

func main() {
    // 常量声明
    const pi = 3.14159
    const greeting = "Hello"
    
    // 批量声明
    const (
        Monday    = 1
        Tuesday   = 2
        Wednesday = 3
    )
    
    // iota 枚举
    const (
        Red = iota    // 0
        Green         // 1
        Blue          // 2
    )
    
    fmt.Println(pi, greeting)
    fmt.Println(Monday, Tuesday, Wednesday)
    fmt.Println(Red, Green, Blue)
}

基本输入输出

go
package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    // 标准输出
    fmt.Print("请输入你的名字: ")
    
    // 读取输入
    reader := bufio.NewReader(os.Stdin)
    name, _ := reader.ReadString('\n')
    
    // 打印结果
    fmt.Printf("你好, %s", name)
    
    // 格式化输出
    age := 25
    fmt.Printf("年龄: %d\n", age)
    fmt.Printf("浮点数: %.2f\n", 3.14159)
    fmt.Printf("布尔值: %t\n", true)
    fmt.Printf("类型: %T\n", age)
}

练习

练习 1:个人信息

编写程序,打印你的姓名、年龄和爱好。

点击查看答案
go
package main

import "fmt"

func main() {
    name := "张三"
    age := 25
    hobby := "编程"
    
    fmt.Printf("姓名: %s\n", name)
    fmt.Printf("年龄: %d\n", age)
    fmt.Printf("爱好: %s\n", hobby)
}

练习 2:温度转换

编写程序,将摄氏度转换为华氏度。

公式:F = C × 9/5 + 32

点击查看答案
go
package main

import "fmt"

func main() {
    celsius := 25.0
    fahrenheit := celsius*9/5 + 32
    
    fmt.Printf("%.1f°C = %.1f°F\n", celsius, fahrenheit)
}

练习 3:简单计算器

编写程序,实现两个数的加减乘除。

点击查看答案
go
package main

import "fmt"

func main() {
    a := 10.0
    b := 3.0
    
    fmt.Printf("%.1f + %.1f = %.1f\n", a, b, a+b)
    fmt.Printf("%.1f - %.1f = %.1f\n", a, b, a-b)
    fmt.Printf("%.1f * %.1f = %.1f\n", a, b, a*b)
    fmt.Printf("%.1f / %.1f = %.1f\n", a, b, a/b)
}

总结

通过这个简单的程序,我们学习了:

  1. Go 程序的基本结构
  2. 包声明和导入
  3. 主函数
  4. 变量和常量声明
  5. 基本输入输出
  6. 代码格式化

接下来,我们将深入学习 Go 的基础语法!

基于 MIT 许可发布