/* 01-hello-world.go - Go 语言入门第一课 学习目标: 1. 了解 Go 程序的基本结构 2. 理解包(package)的概念 3. 学会使用 fmt 包进行输出 4. 掌握 main 函数的作用 知识点: - package 声明 - import 导入 - main 函数 - fmt.Println 输出函数 */ // 每个 Go 文件都必须以 package 声明开始 // main 包是特殊的包,表示这是一个可执行程序 package main // import 用于导入其他包 // fmt 包提供了格式化输入输出的功能 import "fmt" // main 函数是程序的入口点 // 当运行程序时,会自动执行 main 函数 func main() { // fmt.Println 用于输出文本并自动换行 fmt.Println("Hello, World!") fmt.Println("欢迎来到 Go 语言的世界!") // 你也可以使用 fmt.Print(不换行)或 fmt.Printf(格式化输出) fmt.Print("这是 ") fmt.Print("同一行的输出\n") // \n 表示换行 // fmt.Printf 支持格式化输出,类似于 C 语言的 printf name := "Go" version := 1.21 fmt.Printf("我正在学习 %s 语言,版本是 %.2f\n", name, version) // 多种输出方式的演示 demonstrateOutput() } // demonstrateOutput 演示不同的输出方式 func demonstrateOutput() { fmt.Println("\n=== 输出方式演示 ===") // 1. 基本输出 fmt.Println("1. fmt.Println - 输出并换行") // 2. 不换行输出 fmt.Print("2. fmt.Print - ") fmt.Print("不换行输出") fmt.Print("\n") // 手动换行 // 3. 格式化输出 age := 25 height := 175.5 isStudent := true fmt.Printf("3. fmt.Printf - 格式化输出:\n") fmt.Printf(" 年龄: %d 岁\n", age) // %d 表示整数 fmt.Printf(" 身高: %.1f cm\n", height) // %.1f 表示保留1位小数的浮点数 fmt.Printf(" 是学生: %t\n", isStudent) // %t 表示布尔值 fmt.Printf(" 十六进制年龄: %x\n", age) // %x 表示十六进制 fmt.Printf(" 八进制年龄: %o\n", age) // %o 表示八进制 // 4. 通用格式符 %v fmt.Printf("4. 通用格式符 %%v:\n") fmt.Printf(" 年龄: %v, 身高: %v, 是学生: %v\n", age, height, isStudent) // 5. 详细格式符 %+v 和 %#v(主要用于结构体) person := struct { Name string Age int }{"张三", 30} fmt.Printf("5. 结构体输出:\n") fmt.Printf(" %%v: %v\n", person) // 简单格式 fmt.Printf(" %%+v: %+v\n", person) // 包含字段名 fmt.Printf(" %%#v: %#v\n", person) // Go 语法格式 } /* 运行这个程序: 1. 在终端中进入 01-basics 目录 2. 执行命令:go run 01-hello-world.go 预期输出: Hello, World! 欢迎来到 Go 语言的世界! 这是 同一行的输出 我正在学习 Go 语言,版本是 1.21 === 输出方式演示 === 1. fmt.Println - 输出并换行 2. fmt.Print - 不换行输出 3. fmt.Printf - 格式化输出: 年龄: 25 岁 身高: 175.5 cm 是学生: true 十六进制年龄: 19 八进制年龄: 31 4. 通用格式符 %v: 年龄: 25, 身高: 175.5, 是学生: true 5. 结构体输出: %v: {张三 30} %+v: {Name:张三 Age:30} %#v: struct { Name string; Age int }{Name:"张三", Age:30} 学习要点: 1. Go 程序必须有 package 声明 2. main 包表示可执行程序 3. main 函数是程序入口 4. 使用 import 导入需要的包 5. fmt 包提供了丰富的输出功能 6. 注释使用 // 或 */