Go语言快速入门Go语言快速入门
首页
基础篇
进阶篇
高阶篇
实战篇
Go官方网站
编程指南
首页
基础篇
进阶篇
高阶篇
实战篇
Go官方网站
编程指南
  • 进阶篇

    • 🚀 进阶篇
    • 方法
    • 接口
    • 错误处理
    • Goroutine
    • Channel
    • 包管理
    • 单元测试

🚀 进阶篇

欢迎来到Go语言进阶篇!在这一部分,你将学习Go更强大的特性。

前置要求

学习建议

请确保你已经掌握了基础篇的内容:

  • 变量、数据类型、控制流程
  • 函数、数组、切片、Map
  • 结构体、指针

本章内容

在进阶篇,你将学习:

章节内容难度
方法给类型添加行为⭐⭐
接口Go的多态和解耦利器⭐⭐⭐
错误处理Go的错误处理哲学⭐⭐
Goroutine轻量级并发⭐⭐⭐
Channelgoroutine间通信⭐⭐⭐
包管理模块化与依赖管理⭐⭐
单元测试测试驱动开发⭐⭐

核心知识点预览

方法 - 面向对象的Go方式

type Rectangle struct {
    Width, Height float64
}

// 给Rectangle添加方法
func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

rect := Rectangle{10, 5}
fmt.Println(rect.Area())  // 50

接口 - 隐式实现的魔法

// 定义接口
type Speaker interface {
    Speak() string
}

// 任何有Speak方法的类型都自动实现了Speaker接口
type Dog struct{ Name string }
func (d Dog) Speak() string { return "汪汪!" }

type Cat struct{ Name string }
func (c Cat) Speak() string { return "喵喵!" }

// 多态
func MakeSound(s Speaker) {
    fmt.Println(s.Speak())
}

并发 - Go的杀手锏

// Goroutine - 超轻量级线程
go func() {
    fmt.Println("我在另一个goroutine中运行")
}()

// Channel - 安全的通信
ch := make(chan int)
go func() { ch <- 42 }()  // 发送
result := <-ch            // 接收

Go进阶 vs 其他语言

和Java对比

特性JavaGo
类和继承class extends无!用组合
接口实现implements 显式声明隐式实现
异常处理try-catch返回error
多线程Thread(重量级)goroutine(超轻量)
线程通信锁、wait/notifychannel(更安全)

和JavaScript对比

特性JavaScriptGo
异步模型Promise/async-awaitgoroutine
并发单线程事件循环真正的多线程
类型检查运行时编译时
模块系统npm/yarngo mod

学习目标

完成进阶篇后,你将能够:

  • ✅ 使用方法和接口构建面向对象风格的代码
  • ✅ 正确处理Go程序中的错误
  • ✅ 使用goroutine和channel编写并发程序
  • ✅ 管理Go项目的包和依赖
  • ✅ 为Go代码编写单元测试

实战项目预告

学完进阶篇,你将能够完成这些项目:

  1. 并发爬虫 - 使用goroutine同时爬取多个网页
  2. 聊天服务器 - 使用channel实现消息广播
  3. 任务队列 - 生产者消费者模式
  4. HTTP API服务 - 带测试的RESTful接口

准备好了吗?让我们从方法开始!

最近更新: 2025/11/27 18:37
Contributors: 王长安
Next
方法