Skip to content

hoh-zone/lets-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Go语言(Golang)从零基础入门逐步深入到高级主题和实际应用。 适合初学者到中高级开发者使用。 每个章节包括核心知识点、建议代码示例和练习任务,便于自学或教学。 教程假设读者有基本的编程概念(如变量、逻辑),但不要求Go经验。

教程总时长估计:初学者需4-6周(每天1-2小时),包含理论、代码实践和项目。

1. 引言:Go语言概述

  • Go语言的历史、设计哲学(简洁、高效、并发支持)和应用场景(Web服务器、云计算、DevOps)。
  • 安装Go环境:下载、设置GOPATH、GOROOT;使用VS Code或GoLand IDE。
  • 第一个程序:Hello World。
  • 示例:编写并运行简单程序。
  • 练习:修改Hello World程序,添加用户输入。

2. 基础语法和数据类型

  • 变量声明:var、:=短声明;常量const。
  • 基本数据类型:整数(int、uint)、浮点(float32/64)、布尔(bool)、字符串(string)。
  • 复合类型简介:数组、切片(slice)、地图(map)。
  • 类型转换和零值。
  • 示例:变量操作、字符串拼接。
  • 练习:计算简单数学表达式;处理用户输入字符串。

3. 控制结构

  • 条件语句:if、else、switch。
  • 循环:for循环(计数式、条件式、无限循环);range迭代。
  • 跳转语句:break、continue、goto(谨慎使用)。
  • 示例:判断成绩等级;循环求和。
  • 练习:实现FizzBuzz游戏;打印九九乘法表。

4. 函数和方法

  • 函数定义:参数、返回值、多返回值。
  • 匿名函数和闭包。
  • 方法:接收者(receiver)、值接收者和指针接收者。
  • defer语句:延迟执行。
  • 示例:计算阶乘函数;使用闭包计数器。
  • 练习:编写排序函数;实现简单计算器。

5. 错误处理

  • 错误类型:error接口。
  • panic和recover:异常处理。
  • 自定义错误。
  • 示例:文件读取错误处理;panic恢复。
  • 练习:编写函数处理除零错误;模拟数据库连接失败。

6. 结构体和接口

  • 结构体(struct):定义、嵌套、标签(tags)。
  • 接口(interface):定义、实现、空接口(any)。
  • 类型断言和类型开关。
  • 示例:定义Person结构体;实现Shape接口的面积计算。
  • 练习:创建动物接口,实现不同动物的行为;处理JSON序列化。

7. 并发编程

  • Goroutine:轻量级线程。
  • 通道(channel):无缓冲、有缓冲;select语句。
  • 同步:Mutex、RWMutex;WaitGroup。
  • 示例:并发下载文件;生产者-消费者模式。
  • 练习:实现并发求素数;模拟聊天室通道。

8. 包管理和模块

  • 包(package):导入、自定义包。
  • Go Modules:go mod init、go get、go tidy。
  • 第三方库简介:使用标准库(如fmt、net/http)和外部库(如gorilla/mux)。
  • 示例:创建自定义包;导入并使用。
  • 练习:构建一个简单的命令行工具包。

9. 输入输出和文件操作

  • 标准I/O:fmt包、bufio。
  • 文件读写:os包、io/ioutil。
  • JSON/XML处理:encoding包。
  • 示例:读取配置文件;写入日志文件。
  • 练习:实现文件复制器;解析JSON数据。

10. 网络编程

  • HTTP客户端和服务器:net/http包。
  • TCP/UDP socket编程。
  • WebSocket简介。
  • 示例:构建简单Web服务器;API调用。
  • 练习:创建RESTful API;实现聊天服务器。

11. 测试和调试

  • 单元测试:testing包、Test函数、Benchmark。
  • 表驱动测试。
  • 调试工具:go test、delve调试器。
  • 示例:测试加法函数;性能基准。
  • 练习:为之前的函数编写测试;优化循环代码。

12. 高级主题

  • 反射(reflection):reflect包的使用。
  • 上下文(context):取消和超时控制。
  • 泛型(generics):Go 1.18+特性。
  • 性能优化:内存管理、逃逸分析。
  • 示例:反射动态调用;泛型栈实现。
  • 练习:构建泛型链表;使用context处理超时请求。

13. 实际项目和最佳实践

  • 项目1:命令行TODO列表应用。
  • 项目2:Web博客系统(使用Gin框架)。
  • 项目3:并发爬虫。
  • 最佳实践:代码风格(go fmt、go vet)、错误处理模式、安全考虑。
  • 部署:构建二进制、Docker容器化。
  • 练习:扩展项目添加数据库(SQLite);部署到云平台。

附录

  • 常见问题解答:内存泄漏、竞争条件。
  • 资源推荐:官方文档(go.dev)、书籍(如《The Go Programming Language》)、社区(Reddit r/golang、GitHub)。
  • 更新日志:Go版本特性(如Go 1.23的新功能)。

About

lets-go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published