返回课程
AI017 Professional

用Go编程入门

一门适合初学者的实践性课程,介绍Go编程语言。课程以太空探索为主题,分为多个小而易管理的章节,涵盖命令式编程、类型、函数、方法、集合、状态以及并发编程。

4.9
24.0h
749 名学生
0 点赞
人工智能
开始学习

课程概述

📚 内容概要

一门面向初学者、注重实践的 Go 编程语言入门课程。课程采用太空探索主题,分为多个小而易管理的章节,涵盖命令式编程、类型、函数、方法、集合、状态以及并发。

通过简短的课程和七个太空探索主题的综合项目,发现使用 Go 编程的乐趣。

作者: Nathan Youngman,Roger Peppé

致谢: Jennifer Stout,Marina Michaels,Matthew Merkes,Joel Kotarski,Aleksandar Dragosavljević,Renée French,Olga Shalakhina,Erick Zelaya,April Milne,Monica Kamsvaag。

🎯 学习目标

  1. 定义 Go 编程语言及其主要应用场景。
  2. 解释 Go 编译器的作用及其相较于解释器的优势。
  3. 熟练使用 Go Playground 来编写、编译并运行代码。
  4. 正确使用强制性的“唯一正确花括号风格”来组织 Go 代码,避免语法错误。
  5. 使用多种变量声明方式和算术赋值运算符来管理数据。
  6. 生成伪随机数,并通过分支结构和逻辑运算符实现条件逻辑。
  7. 使用 float32float64 声明并格式化浮点变量,控制其宽度和精度。
  8. 识别并缓解由浮点数精度误差和整数溢出引起的错误。
  9. 利用 big 包和无类型常量处理超出标准位宽限制的大数值。
  10. 使用参数、实参和可变参数语法定义并调用函数。

🔹 第 1 课:进入轨道

概述: 本课介绍 Go 编程语言——现代云计算的核心编程语言。学生将学习 Go 的编译特性与解释型语言的根本区别,如何在 Go Playground 中立即进行实验,并掌握包含包和 main 函数的基本 Go 程序结构。

学习成果:

  • 定义 Go 编程语言及其主要应用场景。
  • 解释 Go 编译器的作用及其相较于解释器的优势。
  • 熟练使用 Go Playground 来编写、编译并运行代码。

🔹 第 2 课:任务控制逻辑

概述: 本课介绍 Go 编程的基础构建模块,重点在于如何组织代码并控制其执行流程。学生将学习“唯一正确花括号风格”和程序入口点,逐步掌握变量声明的快捷方式和数学运算符,并最终学习使用布尔值、比较和分支实现决策逻辑。

学习成果:

  • 正确使用强制性的“唯一正确花括号风格”来组织 Go 代码,避免语法错误。
  • 使用多种变量声明方式和算术赋值运算符来管理数据。
  • 生成伪随机数,并通过分支结构和逻辑运算符实现条件逻辑。

🔹 第 3 课:太空数据的物理原理

概述: 本课探讨 Go 如何处理数值数据,从浮点数的精确度到天文距离所需的超大规模数值。学生将学习如何应对计算机内存的局限性,包括浮点数精度误差和整数溢出问题,同时掌握显式类型转换技巧,并利用 big 包处理“非常规”大小的数值。

学习成果:

  • 使用 float32float64 声明并格式化浮点变量,控制其宽度和精度。
  • 识别并缓解由浮点数精度误差和整数溢出引发的错误。
  • 利用 big 包和无类型常量处理超出标准位宽限制的数值。

🔹 第 4 课:构建模块化组件

概述: 本课介绍 Go 程序的基本构建块:函数、自定义类型和方法。学生将学习如何封装可重用的逻辑,定义具有特定行为的新类型,并利用一等函数(包括闭包和匿名函数)创建灵活且模块化的代码。课程以一个实际的综合项目结束,涉及温度转换表的实现。

学习成果:

  • 使用参数、实参和可变参数语法定义并调用函数。
  • 通过 Go 的命名约定区分导出与未导出的标识符。
  • 创建自定义类型,并通过方法和接收者为其添加行为。

🔹 第 5 课:装载货舱

概述: 本课介绍 Go 中用于管理信息集合的关键数据结构。课程从固定长度数组及其内存复制行为开始,过渡到动态切片作为灵活的数据窗口,最后介绍映射(map)以实现高效的键值查找。本单元以“生命游戏”综合项目收尾,展示如何使用多维切片模拟复杂系统。

学习成果:

  • 声明、初始化并遍历固定长度数组和多维网格。
  • 使用索引范围操作切片,并通过 append 函数实现动态增长。
  • 通过区分长度与容量,合理预分配集合,提升内存效率。

🔹 第 6 课:规划火星栖息地

概述: 本课介绍 Go 处理复杂数据与行为的方式。学生将学习如何将不同类型的数据组合成结构体(struct),使用复合字面量进行初始化,并通过方法和构造函数管理其行为。课程还探讨了 Go 独特的设计哲学:优先使用组合而非继承,并通过隐式接口实现多态。

学习成果:

  • 定义、初始化并复制结构体,以管理复杂的火星坐标和探测车数据。
  • 使用结构体标签将 Go 结构体编码为 JSON 格式,实现定制化的数据交换。
  • 实现方法、构造函数和结构体嵌入,构建可复用且结构清晰的代码。

🔹 第 7 课:穿越企鹅洞穴

概述: 本课深入探讨指针在 Go 中的力量与安全性,聚焦于指针如何实现高效的数据修改与内存管理。课程提供一套稳健的防御性编程框架,教导学生如何处理 nil 值,使用 defer 管理资源,并实现符合习惯的错误处理模式——最终应用于一个数独验证引擎的实现。

学习成果:

  • 使用取地址符(&)和解引用符(*)管理内存地址并解引用值。
  • 在函数和方法中使用指针参数和接收者,实现数据的可变性。
  • 在切片、映射和接口中安全地处理 nil 值,避免运行时恐慌。

🔹 第 8 课:多探测车通信

概述: 本课介绍 Go 的核心并发原语:协程(goroutine)和通道(channel)。课程探讨如何独立运行任务,安全地在它们之间通信,并使用互斥锁(Mutex)管理共享状态,防止竞态条件。课程以一个综合项目结束,模拟火星探测车在网格中导航并报告发现的过程。

学习成果:

  • 使用 go 关键字启动和管理并发任务。
  • 使用通道和 select 语句实现协程间的安全通信。
  • 构建数据管道,并通过关闭通道来管理协程生命周期。