CppGuide社区 CppGuide社区
首页
  • 最新谷歌C++风格指南(含C++17/20)
  • C++17详解
  • C++20完全指南
  • C++23快速入门
  • C++语言面试问题集锦
  • 🔥C/C++后端开发常见面试题解析 (opens new window)
  • 网络编程面试题 (opens new window)
  • 网络编程面试题 答案详解 (opens new window)
  • 聊聊WebServer作面试项目那些事儿 (opens new window)
  • 字节跳动面试官现身说 (opens new window)
  • 技术简历指南 (opens new window)
  • 🔥交易系统开发岗位求职与面试指南 (opens new window)
  • 第1章 高频C++11重难点知识解析
  • 第2章 Linux GDB高级调试指南
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 高性能网络通信协议设计精要
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 后端服务重要模块设计探索
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 源码分析系列

    • leveldb源码分析
    • libevent源码分析
    • Memcached源码分析
    • TeamTalk源码分析
    • 优质源码分享 (opens new window)
    • 🔥远程控制软件gh0st源码分析
  • 从零手写C++项目系列

    • C++游戏编程入门(零基础学C++)
    • 🔥使用C++17从零开发一个调试器 (opens new window)
    • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
    • 🔥使用C++从零写一个C语言编译器 (opens new window)
    • 从零用C语言写一个Redis
  • Windows 10系统编程
  • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
  • TCP源码实现超详细注释版.pdf (opens new window)
  • Go语言特性

    • Go开发实用指南
    • Go系统接口编程
    • 高效Go并发编程
    • Go性能调优
    • Go项目架构设计
  • Go项目实战

    • 使用Go从零开发一个数据库
    • 🔥使用Go从零开发一个编译器 (opens new window)
    • 🔥使用Go从零开发一个解释器 (opens new window)
    • 🔥用Go从零写一个编排器(类Kubernetes) (opens new window)
  • Rust编程

    • Rust编程指南
  • 数据库

    • SQL零基础指南
    • MySQL开发与调试指南
GitHub (opens new window)
首页
  • 最新谷歌C++风格指南(含C++17/20)
  • C++17详解
  • C++20完全指南
  • C++23快速入门
  • C++语言面试问题集锦
  • 🔥C/C++后端开发常见面试题解析 (opens new window)
  • 网络编程面试题 (opens new window)
  • 网络编程面试题 答案详解 (opens new window)
  • 聊聊WebServer作面试项目那些事儿 (opens new window)
  • 字节跳动面试官现身说 (opens new window)
  • 技术简历指南 (opens new window)
  • 🔥交易系统开发岗位求职与面试指南 (opens new window)
  • 第1章 高频C++11重难点知识解析
  • 第2章 Linux GDB高级调试指南
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 高性能网络通信协议设计精要
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 后端服务重要模块设计探索
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 源码分析系列

    • leveldb源码分析
    • libevent源码分析
    • Memcached源码分析
    • TeamTalk源码分析
    • 优质源码分享 (opens new window)
    • 🔥远程控制软件gh0st源码分析
  • 从零手写C++项目系列

    • C++游戏编程入门(零基础学C++)
    • 🔥使用C++17从零开发一个调试器 (opens new window)
    • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
    • 🔥使用C++从零写一个C语言编译器 (opens new window)
    • 从零用C语言写一个Redis
  • Windows 10系统编程
  • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
  • TCP源码实现超详细注释版.pdf (opens new window)
  • Go语言特性

    • Go开发实用指南
    • Go系统接口编程
    • 高效Go并发编程
    • Go性能调优
    • Go项目架构设计
  • Go项目实战

    • 使用Go从零开发一个数据库
    • 🔥使用Go从零开发一个编译器 (opens new window)
    • 🔥使用Go从零开发一个解释器 (opens new window)
    • 🔥用Go从零写一个编排器(类Kubernetes) (opens new window)
  • Rust编程

    • Rust编程指南
  • 数据库

    • SQL零基础指南
    • MySQL开发与调试指南
GitHub (opens new window)
  • Go开发实用指南 说明
    • 面向的读者
    • 环境要求
    • 章节结构
    • 详细目录
  • 第1章 Go项目如何组织
  • 第2章 字符串处理
  • 第3章 处理日期和时间
  • 第4章 使用数组、切片和映射
  • 第5章 使用类型、结构体和接口
  • 第6章 使用泛型
  • 第7章 并发
  • 第8章 错误与恐慌(panic)
  • 第9章 context包
  • 第10章 处理大量数据
  • 第11章 处理JSON数据
  • 第12章 进程
  • 第13章 网络编程
  • 第14章 流式输入/输出
  • 第15章 数据库
  • 第16章 日志记录
  • 第17章 测试、基准测试和性能分析
目录

Go开发实用指南 说明

# Go开发实用指南 说明

Page Views Count (opens new window)

Go语言凭借其简洁的语法和务实的惯例,已稳固确立了自身在开发者心中的地位,成为处理网络编程、Web服务、数据处理等领域开发的首选语言。本书旨在为工程师赋能,提供最新的实用方法,以解决常见的编程难题。

本书开篇介绍基础原理,涵盖针对各类项目类型组织包和构建代码结构的有效方法。随后深入探讨实际工程挑战,在网络编程、进程管理、数据库交互、数据管道和测试等方面提供切实可行的解决方案。每一章都提供了可运行的解决方案和适用于生产环境的代码片段,兼顾顺序编程和并发编程环境。

本书中的方法充分利用Go语言的最新特性,如泛型和结构化日志记录,并且主要依赖Go标准库,从而确保对第三方包的依赖降至最低,同时最大化兼容性。

阅读完本书,你将掌握大量经过验证的实践解决方案,加速你的Go开发之旅,自信应对现代软件工程的复杂性。

本书翻译自《Go Recipes for Developers》。

# 面向的读者

本书面向对Go语言有基本了解的开发者。经验更为丰富的开发者也可将其作为参考资料,书中提供的实际示例可应用于多种场景。

# 环境要求

你需要安装Go语言的较新版本(任何高于1.22的版本均可),并将其集成到你喜欢的开发环境中。部分示例程序会用到Docker。

# 章节结构

在本书中,你会经常看到几个标题(准备工作、操作方法……、原理说明……)。为清晰说明如何完成一个方法,各章节结构如下:

  • 准备工作:该部分会介绍本方法的预期内容,并说明为实现该方法所需进行的软件设置或初步配置。
  • 操作方法……:该部分包含实现该方法所需的步骤。
  • 原理说明……:该部分通常会详细解释上一部分的操作。

# 详细目录

  • 前言

  • 第1章 项目组织

    • 模块和包
    • 技术要求
    • 创建模块
      • 操作方法
    • 创建源文件目录结构
      • 操作方法
    • 构建和运行程序
      • 操作方法
    • 导入第三方包
      • 操作方法
    • 导入特定版本的包
      • 操作方法
    • 使用模块缓存
      • 操作方法
    • 使用内部包减少API 表面暴露
      • 操作方法
    • 使用模块的本地副本
      • 操作方法
    • 处理多个模块——工作区
      • 操作方法
    • 管理模块版本
      • 操作方法
    • 总结与拓展阅读
  • 第2章 字符串处理

    • 创建字符串
      • 操作方法
      • 原理说明
    • 格式化字符串
      • 操作方法
      • 原理说明
    • 组合字符串
      • 操作方法
      • 原理说明
    • 处理字符串大小写
      • 操作方法
      • 原理说明
      • 更多内容
    • 处理编码
      • 操作方法
      • 原理说明
    • 迭代字符串的字节和符文
      • 操作方法
      • 原理说明
    • 分割字符串
      • 操作方法
      • 原理说明
    • 逐行或逐词读取字符串
      • 操作方法
      • 原理说明
    • 修剪字符串两端
      • 操作方法
    • 正则表达式
      • 验证输入
      • 搜索模式
      • 从字符串中提取数据
        • 操作方法
        • 原理说明
      • 替换字符串部分内容
        • 操作方法
    • 模板
      • 值替换
      • 迭代
      • 变量和作用域
      • 更多内容——嵌套循环和条件语句
      • 处理空行
        • 操作方法
      • 模板组合
        • 操作方法
        • 原理说明
      • 模板组合——布局模板
        • 操作方法
        • 原理说明
      • 更多内容
  • 第3章 日期和时间处理

    • 处理Unix时间
      • 操作方法
    • 日期/时间组件
      • 操作方法
    • 日期/时间运算
      • 操作方法
      • 原理说明
    • 格式化和解析日期/时间
      • 操作方法
    • 处理时区
      • 操作方法
      • 原理说明
    • 存储时间信息
      • 操作方法
      • 原理说明
    • 定时器(Tickers)
      • 操作方法
      • 原理说明
    • 计时器(Timers)
      • 操作方法
      • 原理说明
  • 第4章 数组、切片和映射的使用

    • 处理数组
      • 创建数组并传递
      • 从数组创建切片
        • 操作方法
        • 原理说明
      • 追加/插入/删除切片元素
        • 操作方法
        • 原理说明
      • 使用切片实现栈
        • 操作方法
        • 原理说明
    • 处理切片
      • 创建切片
      • 原理说明
    • 处理映射
      • 定义、初始化和使用映射
        • 操作方法
      • 使用映射实现集合
        • 操作方法
        • 原理说明
      • 复合键
        • 操作方法
        • 原理说明
      • 使用映射实现线程安全缓存
        • 简单缓存
        • 操作方法
        • 原理说明
        • 具有阻塞行为的缓存
        • 操作方法
        • 原理说明
  • 第5章 类型、结构体和接口的使用

    • 创建新类型
      • 基于现有类型创建新类型
        • 操作方法
      • 创建类型安全的枚举
        • 操作方法
    • 创建结构体类型
      • 操作方法
    • 扩展类型
      • 扩展基础类型
        • 操作方法
        • 原理说明
    • 初始化结构体
      • 操作方法
    • 定义接口
      • 接口作为契约
        • 操作方法
      • 工厂模式
        • 操作方法
      • 在使用处定义接口
        • 操作方法
        • 原理说明
    • 使用函数作为接口
      • 操作方法
      • 原理说明
    • 在运行时发现数据类型的能力——测试“实现”关系
      • 操作方法
      • 原理说明
    • 测试接口值是否为已知类型之一
      • 操作方法
    • 在开发过程中确保类型实现接口
      • 操作方法
    • 决定方法使用指针接收器还是值接收器
      • 操作方法
      • 原理说明
    • 多态容器
      • 操作方法
      • 原理说明
    • 访问对象中未通过接口直接暴露的部分
      • 操作方法
    • 从嵌入结构体访问被嵌入结构体
      • 操作方法
    • 检查接口是否为nil
      • 操作方法
      • 原理说明
  • 第6章 泛型的使用

    • 泛型函数
      • 编写一个用于数字相加的泛型函数
      • 将约束声明为接口
      • 使用泛型函数作为访问器和适配器
      • 从泛型函数返回零值
      • 对泛型参数使用类型断言
    • 泛型类型
      • 编写类型安全的集合
      • 有序映射——使用多个类型参数
  • 第7章 并发编程

    • 使用goroutine并发执行任务
      • 创建goroutine
      • 并发运行多个独立函数并等待它们完成
    • 使用通道在goroutine之间通信
      • 使用通道发送和接收数据
      • 从多个goroutine向通道发送数据
      • 使用通道收集并发计算的结果
    • 使用select语句处理多个通道
    • 取消goroutine
    • 使用非阻塞select检测取消操作
    • 共享内存
    • 并发更新共享变量
  • 第8章 错误和异常处理

    • 返回和处理错误
      • 操作方法
      • 原理说明
    • 包装错误以添加上下文信息
      • 操作方法
      • 原理说明
    • 比较错误
      • 操作方法
    • 结构化错误
      • 操作方法
      • 原理说明
    • 从错误树中提取特定错误
      • 操作方法
      • 原理说明
    • 处理异常(Panics)
      • 必要时引发异常
        • 操作方法
      • 从异常中恢复
        • 操作方法
      • 原理说明
      • 在恢复过程中更改返回值
        • 操作方法
        • 原理说明
      • 捕获异常的堆栈跟踪信息
        • 操作方法
    • 包装结构化错误
      • 操作方法
      • 原理说明
    • 按类型比较结构化错误
      • 操作方法
  • 第9章 Context包的使用

    • 使用Context传递请求作用域的数据
      • 操作方法
      • 原理说明
      • 更多内容
    • 使用Context进行取消操作
      • 操作方法
      • 原理说明
    • 使用Context设置超时
      • 操作方法
      • 原理说明
      • 更多内容
    • 在服务器中使用取消操作和超时设置
      • 操作方法
  • 第10章 大数据处理

    • 工作池
      • 有上限的工作池
      • 固定大小的工作池
      • 连接池
    • 管道
      • 无扇出/扇入的简单管道
      • 以工作池为阶段的管道
      • 有扇出和扇入的管道
      • 处理大型结果集
      • 使用goroutine流式传输结果
  • 第11章 JSON处理

    • 编组/解组基础
      • 编码结构体
        • 操作方法
      • 处理嵌入结构体
        • 操作方法
      • 不定义结构体进行编码
        • 操作方法
      • 解码结构体
        • 操作方法
      • 使用接口、映射和切片进行解码
        • 操作方法
      • 处理缺失和可选值
        • 编码时忽略空字段
          • 操作方法
        • 解码时处理缺失字段
          • 操作方法
    • 自定义JSON编码/解码
      • 编组/解组自定义数据类型
        • 操作方法
      • 自定义对象键的编组/解组
        • 操作方法
      • 动态字段名
        • 操作方法
      • 多态数据结构
      • 分两步进行自定义解组
        • 操作方法
    • 流式处理JSON数据
      • 流式传输对象数组
        • 操作方法
      • 解析对象数组
        • 操作方法
      • 其他流式处理JSON的方式
    • 安全注意事项
      • 操作方法
  • 第12章 进程处理

    • 运行外部程序
      • 操作方法
      • 向进程传递参数
      • 展开参数
      • 通过Shell运行命令
    • 从子进程读取输出
      • 操作方法
    • 向子进程提供输入
      • 操作方法
    • 更改子进程的环境变量
      • 操作方法
    • 使用信号实现优雅终止
      • 操作方法
  • 第13章 网络编程

    • TCP网络编程
      • 编写TCP服务器
        • 操作方法
        • 原理说明
      • 编写基于行的TCP服务器
        • 操作方法
      • 使用TCP连接发送/接收文件
        • 操作方法
      • 编写TCP客户端
        • 操作方法
      • 编写TLS客户端/服务器
        • 操作方法
      • 用于TLS终止和负载均衡的TCP代理
        • 操作方法
      • 设置读写截止时间
        • 操作方法
      • 解除阻塞的读写操作
        • 操作方法
        • 原理说明
    • 编写UDP客户端/服务器
      • 操作方法
    • 使用HTTP
      • 发起HTTP调用
        • 操作方法
      • 运行HTTP服务器
        • 操作方法
      • HTTPS——设置TLS服务器
        • 操作方法
      • 编写HTTP处理器
        • 操作方法
      • 在文件系统上提供静态文件服务
        • 操作方法
      • 处理HTML表单
        • 操作方法
      • 编写用于下载大文件的处理器
        • 操作方法
      • 以流的方式处理HTTP上传的文件和表单
        • 操作方法
  • 第14章 流式输入/输出

    • 读取器/写入器
      • 从读取器读取数据
      • 向写入器写入数据
      • 从字节切片读取数据和向字节切片写入数据
      • 从字符串读取数据和向字符串写入数据
    • 文件操作
      • 创建和打开文件
      • 关闭文件
      • 从文件读取数据/向文件写入数据
      • 从特定位置读取/写入数据
      • 更改文件大小
      • 获取文件大小
      • 处理二进制数据
        • 操作方法
    • 数据复制
      • 复制文件
    • 文件系统操作
      • 处理文件名
      • 创建临时目录和文件
      • 读取目录
    • 管道操作
      • 将需要读取器的代码与需要写入器的代码连接起来
      • 使用TeeReader拦截读取器
  • 第15章 数据库操作

    • 连接数据库
      • 操作方法
    • 运行SQL语句
      • 不使用显式事务运行SQL语句
      • 使用事务运行SQL语句
      • 在事务中运行预编译语句
      • 从查询中获取值
        • 操作方法
    • 动态构建SQL语句
      • 构建UPDATE语句
        • 操作方法
      • 构建WHERE子句
        • 操作方法
  • 第16章 日志记录

    • 使用标准日志记录器
      • 写入日志消息
      • 控制格式
      • 更改日志输出位置
    • 使用结构化日志记录器
      • 使用全局日志记录器进行日志记录
      • 使用不同级别写入结构化日志
      • 在运行时更改日志级别
      • 使用带有额外属性的日志记录器
      • 更改日志输出位置
      • 从上下文添加日志信息
  • 第17章 测试、基准测试和性能分析

    • 单元测试
      • 编写单元测试
        • 操作方法
      • 运行单元测试
        • 操作方法
      • 测试中记录日志
        • 操作方法
      • 跳过测试
      • 测试HTTP服务器
        • 操作方法
      • 测试HTTP处理器
        • 操作方法
      • 检查测试覆盖率
        • 操作方法
    • 基准测试
      • 编写基准测试
        • 操作方法
      • 编写具有不同输入大小的多个基准测试
      • 运行基准测试
        • 操作方法
    • 性能分析
      • 操作方法
    • 另请参阅
第1章 Go项目如何组织

第1章 Go项目如何组织→

最近更新
01
第二章 关键字static及其不同用法
03-27
02
第一章 auto与类型推导
03-27
03
第四章 Lambda函数
03-27
更多文章>
Copyright © 2024-2025 沪ICP备2023015129号 张小方 版权所有
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式