【不演了,这篇文章是AI写的】我是如何用 Cursor 快速生成一个 Golang 新手教程的

371 阅读5分钟

前言:一次与 AI 的代码奇旅

恰好我最近一直在使用 Cursor,它就像一个不知疲倦、学识渊博的编程搭档。于是,一个想法在我脑海中萌生:我能不能和 Cursor 合作,从零开始,快速构建一个完整的 Go 语言入门教程库?

这个想法让我兴奋不已。这不仅是对 AI 能力的一次深度检验,也是对我自己学习和应用 Golang 知识的一次梳理。说干就干,我开始了这次独特的"人机协作"项目。

项目诞生:从一个想法到清晰的教学大纲

我的目标是创建一个对新手友好、内容全面的 Golang 学习资源。我向 Cursor 下达了我的第一个指令:

"我想要创建一个 Golang 教学库,内容要覆盖从基础到进阶,并且包含几个实战小项目来帮助理解。你能帮我规划一下整体结构吗?"

Cursor 很快就给出了回应,建议了一个非常清晰的目录结构,包含三个主要部分:basics(基础)、advanced(进阶)和 projects(项目实践)。

我们经过几轮的讨论和微调,最终确定了详细的教学大纲:

  • 基础部分 (basics):

    • 01_variables_types.go: 变量、常量和基本数据类型
    • 02_control_flow.go: if-else, for, switch 等流程控制
    • 03_functions.go: 函数的定义、参数和返回值
    • 04_arrays_slices_maps.go: 数组、切片和映射
    • 05_structs_methods.go: 结构体与方法,Go 语言的"类"
    • 06_interfaces.go: 接口,Go 语言多态的核心
    • 07_error_handling.go: Go 语言独特的错误处理机制
  • 进阶部分 (advanced):

    • 01_packages.go: Go 语言的包管理
    • 02_concurrency.go: Goroutines 和 Channels,Go 语言的并发利器
    • 03_file_operations.go: 文件读写操作
    • 04_network_http.go: 构建 HTTP 客户端和服务器
    • 05_strings_regexp.go: 字符串处理和正则表达式
    • 06_time_crypto.go: 时间处理和加密/解密
  • 项目实践 (projects):

    • calculator/: 一个简单的命令行计算器
    • todo-cli/: 一个待办事项管理工具
    • web-server/: 一个基础的 Web 服务器

这个大纲几乎涵盖了 Golang 新手需要掌握的所有核心知识点。我非常满意,这为我们接下来的工作打下了坚实的基础。

"结对编程": 与 AI 一起码代码

大纲确定后,我们便开始了内容填充工作。这个过程与其说是"让 AI 生成代码",不如说是一场沉浸式的"结对编程"。

我的角色更像是一个"领航员"或者"产品经理"。我为每一个文件提出具体的需求:

"现在,请为 basics/01_variables_types.go 文件生成代码。请包含变量声明的各种方式(var, :=),以及 Go 的基本数据类型(int, float64, string, bool),并为每段代码配上清晰的中文注释,方便初学者理解。"

Cursor 则像一个高效的"实现者",迅速生成符合要求的代码。比如,在生成并发编程的示例时,它不仅写出了 Goroutine 和 Channel 的使用方法,还贴心地用注释解释了为什么需要并发,以及 Channel 是如何保证数据同步的。

当然,AI 并非完美。有时它生成的代码可能过于简化,或者没有完全理解我的意图。这时,我就会进行追问和修正:

"这里的错误处理逻辑可以更优雅一些吗?使用 if err != nil 的模式,并给出具体的错误信息。"

"这个 Web 服务器的例子很好,但能不能再增加一个处理 /hello 路由的 handler,返回 'Hello, World!'?"

这种即时反馈和迭代的模式效率极高。我们一个文件一个文件地推进,从基础语法到并发编程,再到实战项目。整个过程行云流水,我几乎没有写多少样板代码,更多的时间花在了思考"教什么"和"怎么教"上。

最终,我们只花了非常短的时间,就完成了整个代码库的编写。这是我独立开发难以想象的速度。

成果展示

下面就是我们这次合作的最终成果——一个结构清晰、内容丰富的 Golang 教学库:

goang/
  - advanced/
    - 01_packages.go
    - 02_concurrency.go
    - 03_file_operations.go
    - 04_network_http.go
    - 05_strings_regexp.go
    - 06_time_crypto.go
  - basics/
    - 01_variables_types.go
    - 02_control_flow.go
    - 03_functions.go
    - 04_arrays_slices_maps.go
    - 05_structs_methods.go
    - 06_interfaces.go
    - 07_error_handling.go
  - projects/
    - calculator/
      - main.go
    - todo-cli/
      - main.go
    - web-server/
      - main.go
  - README.md

每一份代码文件都经过了我的审核和微调,确保了质量和可读性。例如,在 02_concurrency.go 中,我们不仅有代码,还有详尽的解释:

// ... (部分代码示例) ...

// 使用 channel 进行 goroutine 间通信
func messageProducer(ch chan<- string) {
    // 向 channel 发送消息
    ch <- "Hello from producer!"
    ch <- "This is the second message."
    close(ch) // 发送完毕后关闭 channel
}

func messageConsumer(ch <-chan string, wg *sync.WaitGroup) {
    defer wg.Done()
    // 从 channel 接收消息,直到 channel 关闭
    for message := range ch {
        fmt.Println("Consumed:", message)
    }
}

// ...

这段代码清晰地展示了 Go 并发编程的核心魅力。

感想与反思:拥抱 AI,重塑开发范式

这次经历让我对 AI 辅助编程有了全新的认识。

AI 是加速器,而不是替代品。 Cursor 帮我处理了大量重复和模式化的工作,让我能更专注于高层次的架构设计和教学内容的规划。它极大地提升了开发效率。

AI 是领航员,也是副驾驶。 当我对某个知识点(比如 Go 的加密库)有些模糊时,我可以随时向它提问,它能快速给出示例和解释。这种"即问即答"的学习方式非常高效。

人类的智慧和经验依然是核心。 AI 生成的代码需要被审查,AI 的方案需要被评估。最终产品的质量,依然取决于开发者的经验、审美和对需求的理解。我们的角色,正从"代码工人"转变为"AI 指挥家"。

回到掘金活动的主题,"技术为金石,笔锋定乾坤"。AI 正是那块能点石成金的"技术金石",而我们的"笔锋",则体现在如何提出好问题、如何设计好架构、如何用我们的思想和经验去驾驭这股强大的力量。

结语

使用 Cursor 快速生成这个 Golang 教学库是一次非常愉快和有启发性的体验。它让我看到了未来软件开发的一种新范式:人机协作,各取所长,共同创造。

如果你也对 AI 编程感兴趣,不妨也试试看。选择一个你感兴趣的小项目,把它作为和 AI "结对编程"的起点,你或许会打开一扇新世界的大门。

最后,欢迎大家访问我这个(即将开源)的 Golang 教学库,如果它能帮助到你,将是我最大的荣幸!