Files
test/chapters/chapter-2-revised.md

6.1 KiB
Raw Blame History

第二章Go 基础语法 —— 像搭积木一样写代码

👋 回顾一下:

上节我们成功安装了 Go还写出了第一个 Hello, World! 程序。是不是觉得“原来编程也没那么难”?

🤔 但是,光会打印一句话可不够哦! 真正的编程,是要处理数据、做判断、循环操作……就像搭积木,我们需要先认识各种“积木块”(变量、类型),然后学习怎么把它们拼在一起(流程控制)。

🎯 这一章,我们要掌握三样东西:

  1. 变量:给数据起名字,存起来。
  2. 类型:知道数据是什么“材质”的(整数?字符串?)。
  3. 流程控制:让程序学会“如果……就……"和“循环……"。

别担心,我会用大量的例子,让你边学边练!


2.1 变量声明 —— 给数据找个“家”

💡 想象一下: 你在整理房间,需要给不同的物品贴上标签,比如“书”、“衣服”、“鞋子”。在编程中,变量就是这些标签,用来存储数据

📝 Go 的四种声明方式

1. var 声明(最正式)

var name string = "Alice"
var age int = 25
  • 老师点评:这是最规范的写法,适合在函数外面声明全局变量。

2. var 声明(类型推断)

var name = "Bob"  // Go 自动推断 name 是 string 类型
  • 老师点评更简洁只要给了初始值Go 就知道它是什么类型了。

3. 短声明 :=(最常用!)

name := "Charlie"
age := 30
  • 老师点评这是 Go 程序员最爱用的写法! 既简洁又清晰。记住,只能在函数里面用哦!

4. 多变量声明

x, y, z := 1, 2, 3
  • 老师点评:一次声明多个变量,效率更高!

⚠️ 老师的小提醒:

  • 变量名要有意义(比如用 userName 而不是 a)。
  • Go 是大小写敏感的(Namename 是两个不同的变量)。
  • 未使用的变量会让编译器报错(这是 Go 的“强迫症”,但能帮你避免很多 bug

🎮 动手练一练: 试着声明几个变量,存储你的姓名、年龄、身高,并打印出来!


2.2 数据类型 —— 认识各种“积木块”

🧱 常见的数据类型:

  • 整数int, int8, int16, int32, int64……(用来存数字)
  • 无符号整数uint, uint8, uint16, uint32, uint64……(只存正数,范围更大)
  • 浮点数float32, float64……(用来存小数,比如 3.14
  • 字符串string(用来存文字,比如 "Hello"
  • 布尔值bool(只有 truefalse 两个值)
  • 字节byteuint8 的别名,用来处理二进制数据)
  • 字符runeint32 的别名,用来处理 Unicode 字符,比如中文)

💡 老师的小技巧:

  • 如果不确定用哪种整数,直接用 int 就行(它会根据系统自动选择最合适的)。
  • 字符串在 Go 中是不可变的(不能修改里面的字符),如果需要修改,可以用 []rune 转换。
  • 浮点数比较时,不要直接用 ==(因为精度问题),可以用 math.Abs(a-b) < 0.00001 来判断是否“近似相等”。
  • byte 常用于处理文件、网络数据;rune 常用于处理中文、emoji 等多字节字符。

🎮 动手练一练: 试着声明几个不同类型的变量,并打印它们的类型(用 %T 格式化符)。


2.3 流程控制 —— 让程序“动”起来

🤔 如果……就……

生活中充满了判断:

  • 如果下雨,就带伞
  • 如果分数>=90,就得 A

在 Go 中,我们用 if-else 来实现:

score := 85
if score >= 90 {
    fmt.Println("优秀!")
} else if score >= 80 {
    fmt.Println("良好!")
} else {
    fmt.Println("继续努力!")
}

🔄 循环……循环……

如果想重复做一件事,比如打印 1 到 100怎么办

Go 只有 for 循环,但功能强大:

// 传统 for 循环
for i := 1; i <= 10; i++ {
    fmt.Println(i)
}

// while 风格(省略初始化)
i := 0
for i < 10 {
    fmt.Println(i)
    i++
}

// 无限循环(记得用 break 退出!)
for {
    // ...
    break
}

🎯 老师的小总结:

  • if-else 用来做判断
  • for 用来做循环
  • Go 没有 whiledo-while,但 for 可以搞定一切!

🎮 动手练一练: 写一个程序,打印 1 到 100 之间所有的偶数


2.4 运算符 —— 让数据“动起来”

🧮 常见的运算符:

  • 算术+, -, *, /, %(取余)
  • 比较==, !=, >, <, >=, <=
  • 逻辑&&(与), ||(或), !(非)
  • 位运算&, |, ^, <<, >>(进阶内容,暂时了解即可)

💡 老师的小提醒:

  • 整数除法会截断小数部分5/2 = 2),如果需要小数,用浮点数(5.0/2.0 = 2.5)。
  • 逻辑运算符支持短路求值false && 复杂计算() 不会执行复杂计算)。

🎮 动手练一练: 写一个程序,判断一个年份是否是闰年(能被 4 整除但不能被 100 整除,或者能被 400 整除)。


2.5 本章小结

🎯 我们学到了什么?

  1. 变量声明var、短声明 :=、多变量声明。
  2. 数据类型:整数、浮点数、字符串、布尔值、字节、字符。
  3. 流程控制if-else 判断、for 循环。
  4. 运算符:算术、比较、逻辑、位运算。

🚀 下一步预告: 学会了基础语法,我们就能写一些简单的程序了!但现实世界的数据往往更复杂:比如一个学生有姓名、年龄、成绩……这时候,我们需要数据结构(数组、切片、映射、结构体)来组织这些数据。

下一章,我们就来认识这些强大的“数据容器”! 准备好了吗?