第一个 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)
}
总结
通过这个简单的程序,我们学习了:
- Go 程序的基本结构
- 包声明和导入
- 主函数
- 变量和常量声明
- 基本输入输出
- 代码格式化
接下来,我们将深入学习 Go 的基础语法!