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

158 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第一章:初识 Go —— 让我们开始这段奇妙的旅程
> **👋 嗨,新朋友!**
>
> 欢迎来到 Go 语言的世界!我是思语,接下来的日子,我将作为你的向导,陪你一起探索 Go 的魅力。
>
> 也许你之前用过 Python 的简洁,也感受过 Java 的严谨,或者在 C++ 的指针迷宫里迷路过。但今天,我们要认识一位新朋友——**Go (Golang)**。它像一位**干练的工程师**:说话简洁(语法简单)、干活高效(编译快)、还能同时处理很多任务(并发强大)。
>
> **🤔 你可能会想:**
> * “为什么现在要学 Go
> * “它真的有那么好吗?”
> * “我零基础能学会吗?”
>
> **别担心!** 这些问题,我们都会在接下来的内容中一一解答。更重要的是,**我会手把手带你写出第一个 Go 程序**,让你立刻感受到编程的乐趣!
>
> **🚀 准备好了吗?让我们先从安装 Go 开始吧!**
---
## 1.1 为什么选择 Go—— 它凭什么这么火?
> **📖 先讲个故事:**
>
> 想象一下,你是一家大公司的工程师。你需要写一个服务,既要处理成千上万的并发请求,又要启动快、占内存少,还要方便部署。
>
> * 如果用 **Java**,可能得配一大堆库,启动慢得像蜗牛,内存占用还高。
> * 如果用 **C++**,性能是好了,但写起来太复杂,稍不留神就出内存泄漏,调试起来让人头大。
>
> 这时候,**Go** 出现了!它像一位**全能选手**
> * **简单**:只有 25 个关键字,半天就能上手。
> * **快**:编译成机器码,启动毫秒级,运行效率接近 C。
> * **并发强**:内置 Goroutine轻松处理百万级并发写并发代码像写串行代码一样简单。
> * **部署方便**:一个二进制文件,扔到任何地方就能跑,不用装环境。
>
> 正因如此Docker、Kubernetes、Prometheus 这些云原生时代的“明星项目”,都是 Go 写的!
>
> **💡 老师划重点:**
> 如果你想在**云原生、微服务、高并发**领域发展Go 绝对是你的**必选项**!而且,它也是很多创业公司首选的后端语言,因为**开发快、运维成本低**。
---
## 1.2 安装 Go 环境 —— 迈出第一步
> **🛠️ 动手时间!**
>
> 别被“安装”两个字吓到,其实超级简单!就像安装微信一样,点几下鼠标就搞定了。
### 📥 第一步:下载
打开 Go 官网https://go.dev/dl/
根据你的系统Windows/macOS/Linux下载对应的安装包。
### 🔧 第二步:安装
* **Windows**:双击 `.msi` 文件一路点“Next”即可。
* **macOS**:双击 `.pkg` 文件,按提示安装。
* **Linux**:解压到 `/usr/local`,然后配置环境变量(别担心,我会给你复制粘贴的命令!)。
### ✅ 第三步:验证
打开终端(或命令提示符),输入:
```bash
go version
```
如果看到类似 `go version go1.21.0 linux/amd64` 的输出,**恭喜你!安装成功!** 🎉
> **🤔 遇到问题?**
> 别慌!常见的错误我都总结在 1.6 节了,随时可以回来查。
---
## 1.3 你的第一个 Go 程序 —— Hello, World!
> **🎉 见证奇迹的时刻!**
>
> 安装好环境后,第一件事当然是写代码啦!别担心,我们只写几行。
新建一个文件 `hello.go`,写下:
```go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
```
> **🤔 别急着运行,先猜猜看:**
> * `package main` 是干嘛的?
> * `func main()` 为什么这么重要?
> * `fmt.Println` 是怎么把字打印出来的?
>
> **先别急着看答案,带着问题去运行它!**
在终端输入:
```bash
go run hello.go
```
看到 `Hello, World!` 了吗?🎉
> **💡 老师的小揭秘:**
> * `package main`:告诉 Go 这是一个**可执行程序**(不是库)。
> * `func main()`:程序的**入口**,程序从这里开始执行。
> * `fmt.Println`Go 标准库里的“打印机”,负责把内容输出到屏幕。
> **🚀 现在,试着把 "Hello, World!" 改成 "Hello, [你的名字]!",再运行一次!**
>
> 感觉如何?是不是很简单?别急,**简单的背后,藏着 Go 的哲学**:简洁、高效、不啰嗦。
**接下来,我们要深入一点,看看 Go 是怎么“思考”的。** 比如,它怎么存储数据?怎么判断真假?怎么让程序“动”起来?
**这就引出了我们下一章的内容Go 的基础语法。** 别担心,我们会像搭积木一样,一块一块地认识这些“积木块”。
---
## 1.4 常见错误与解决方案
> **🤔 遇到报错别慌张!**
>
> 编程路上,报错是家常便饭。重要的是学会看报错信息。这里列举几个新手常遇到的错误:
* **`command not found: go`**
* **原因**:环境变量没配好。
* **解决**:检查 `PATH` 是否包含 Go 的 `bin` 目录(通常是 `/usr/local/go/bin``C:\Go\bin`)。
* **`package main is not in GOROOT`**
* **原因**Go 模块未初始化。
* **解决**:在项目目录下运行 `go mod init <项目名>`
* **`undefined: fmt`**
* **原因**:忘了导入 `fmt` 包。
* **解决**:加上 `import "fmt"`
> **💡 老师的小建议:**
> 遇到报错,先**复制报错信息**,去 Google 或 Stack Overflow 搜一下99% 的问题都能找到答案。这也是程序员的基本功哦!
---
## 1.5 本章小结
> **🎯 我们学到了什么?**
> 1. **为什么学 Go**:简单、快、并发强、部署方便。
> 2. **如何安装**:下载、安装、验证。
> 3. **第一个程序**`Hello, World!`,理解了 `package`、`func main`、`import`。
> 4. **常见错误**:学会了看报错信息,知道怎么解决。
> **🚀 下一步预告:**
> 光会打印一句话可不够哦!下一章,我们要学习**Go 的基础语法**:变量、类型、流程控制。想象一下,学会了这些,你就能写计算器、猜数字游戏……甚至更酷的东西了!
>
> **准备好了吗?我们下一章见!**