展开全部

主编推荐语

本书由浅入深地介绍了Go编程语言。

内容简介

首先,本书揭示了Go的发展历程和设计哲学,引导读者了解Go的核心理念;其次,详细介绍了建立Go开发环境、编写Go程序、Go的代码组织和依赖管理等内容,为读者夯实编程基础;再次,重点讲解了Go的语法特性,包括变量与类型、基本数据类型、常量、复合数据类型、指针类型、控制结构、函数、错误处理、方法、接口类型、并发编程、泛型等,确保读者能够掌握Go的复杂特性;最后,介绍了Go的测试,帮助读者确保代码质量和性能。

目录

  • 版权信息
  • 内容提要
  • 前言
  • 资源与支持
  • 第1章 Go的那些事儿
  • 1.1 Go的历史与现状
  • 1.1.1 Go是怎样诞生的
  • 1.1.2 从“三人行”到“众人拾柴”
  • 1.1.3 Go是否值得我们学习
  • 1.1.4 学习Go的最佳时机
  • 1.2 Go的设计哲学
  • 1.2.1 简单
  • 1.2.2 显式
  • 1.2.3 组合
  • 1.2.4 并发
  • 1.2.5 面向工程
  • 1.3 本章小结
  • 第2章 建立Go开发环境
  • 2.1 选择Go版本
  • 2.2 安装Go
  • 2.2.1 使用安装包安装Go
  • 2.2.2 使用预编译二进制包安装Go
  • 2.2.3 使用go install命令安装Go
  • 2.2.4 基于源码编译安装Go
  • 2.2.5 安装和管理多个Go版本
  • 2.3 配置Go
  • 2.4 在线体验Go
  • 2.5 本章小结
  • 第3章 第一个Go程序
  • 3.1 “hello, world”示例程序
  • 3.1.1 创建helloworld文件夹
  • 3.1.2 编写并运行第一个Go程序
  • 3.2 Go程序的结构
  • 3.3 编译Go程序
  • 3.4 第一个Go module
  • 3.5 本章小结
  • 第4章 Go包、模块与代码组织结构
  • 4.1 Go包
  • 4.1.1 Go包的定义与导入
  • 4.1.2 Go包的初始化函数
  • 4.1.3 Go程序的编译单元
  • 4.2 Go module
  • 4.3 Go项目的代码组织结构
  • 4.3.1 创世项目
  • 4.3.2 社区共识
  • 4.3.3 官方指南
  • 4.4 本章小结
  • 第5章 Go的依赖管理
  • 5.1 Go依赖管理模式的演化
  • 5.2 基于Go module的依赖管理
  • 5.3 常见的Go module操作
  • 5.3.1 添加依赖
  • 5.3.2 升级/降级依赖的版本
  • 5.3.3 添加一个主版本号大于1的依赖
  • 5.3.4 升级依赖版本到一个不兼容版本
  • 5.3.5 移除依赖
  • 5.3.6 兼容vendor
  • 5.3.7 替换依赖
  • 5.4 本章小结
  • 第6章 变量与类型
  • 6.1 变量与类型的意义
  • 6.2 变量声明
  • 6.2.1 未显式赋予初值
  • 6.2.2 变量声明块
  • 6.2.3 省略类型信息的声明
  • 6.2.4 短变量声明
  • 6.2.5 包级变量的声明形式
  • 6.2.6 局部变量的声明形式
  • 6.3 变量的作用域
  • 6.4 本章小结
  • 第7章 基本数据类型
  • 7.1 布尔类型
  • 7.2 数值类型
  • 7.2.1 整型
  • 7.2.2 浮点类型
  • 7.2.3 复数类型
  • 7.3 字符串类型
  • 7.3.1 原生支持字符串类型的好处
  • 7.3.2 Go字符串的组成
  • 7.3.3 Go字符串类型的内部表示
  • 7.3.4 Go字符串类型的常见操作
  • 7.4 本章小结
  • 第8章 常量
  • 8.1 常量基础
  • 8.2 Go原生支持常量的好处
  • 8.3 Go常量的创新
  • 8.3.1 无类型常量
  • 8.3.2 隐式转型
  • 8.3.3 实现枚举
  • 8.4 本章小结
  • 第9章 复合数据类型
  • 9.1 数组:同构静态复合类型
  • 9.1.1 数组的基本特性
  • 9.1.2 多维数组
  • 9.2 切片:同构动态复合类型
  • 9.2.1 切片基础
  • 9.2.2 切片类型的实现
  • 9.2.3 切片的扩容
  • 9.3 map类型
  • 9.3.1 map基础
  • 9.3.2 map变量的声明和初始化
  • 9.3.3 map的基本操作
  • 9.3.4 map变量的传递开销
  • 9.3.5 map的并发访问
  • 9.4 结构体类型:建立对真实世界的抽象
  • 9.4.1 定义一个新类型
  • 9.4.2 定义结构体类型
  • 9.4.3 结构体变量的声明与初始化
  • 9.5 本章小结
  • 第10章 指针类型
  • 10.1 什么是指针类型
  • 10.2 指向指针类型变量的指针
  • 10.3 指针用途与使用限制
  • 10.4 本章小结
  • 第11章 控制结构
  • 11.1 if语句
  • 11.1.1 认识if语句
  • 11.1.2 支持声明if语句的自用变量
  • 11.1.3 if语句的“快乐路径”原则
  • 11.2 for语句
  • 11.2.1 for语句的经典使用形式
  • 11.2.2 for range循环形式
  • 11.2.3 带label的continue语句
  • 11.2.4 break语句的使用
  • 11.2.5 循环变量重用
  • 11.3 switch语句
  • 11.3.1 认识switch语句
  • 11.3.2 switch语句的灵活性
  • 11.3.3 type switch
  • 11.4 本章小结
  • 第12章 函数
  • 12.1 Go函数基础
  • 12.1.1 函数声明
  • 12.1.2 函数参数
  • 12.1.3 函数返回值
  • 12.2 函数是“一等公民”
  • 12.3 defer:简化函数实现
  • 12.3.1 认识defer
  • 12.3.2 使用defer的注意事项
  • 12.4 本章小结
  • 第13章 错误处理
  • 13.1 Go的错误处理
  • 13.1.1 Go的错误处理机制
  • 13.1.2 错误值构造与检视
  • 13.2 Go的异常处理
  • 13.2.1 认识panic
  • 13.2.2 如何应对panic
  • 13.3 本章小结
  • 第14章 方法
  • 14.1 认识Go方法
  • 14.1.1 方法的声明
  • 14.1.2 方法的本质
  • 14.2 选择receiver参数类型
  • 14.2.1 receiver参数类型对Go方法的影响
  • 14.2.2 选择receiver参数类型的原则
  • 14.3 方法集合
  • 14.3.1 为什么要有方法集合
  • 14.3.2 方法集合的定义
  • 14.3.3 选择receiver参数类型的第三个原则
  • 14.4 类型嵌入模拟“实现继承”
  • 14.5 本章小结
  • 第15章 接口类型
  • 15.1 接口类型基础
  • 15.1.1 接口类型的定义
  • 15.1.2 尽量定义“小接口”
  • 15.2 接口类型的实现
  • 15.2.1 接口的静态特性与动态特性
  • 15.2.2 nil的error值不等于nil
  • 15.2.3 接口类型变量的内部表示
  • 15.3 使用接口时的注意事项
  • 15.4 本章小结
  • 第16章 并发编程
  • 16.1 什么是并发
  • 16.2 Go的并发方案
  • 16.2.1 goroutine的基本用法
  • 16.2.2 CSP并发模型
  • 16.3 goroutine间的通信
  • 16.3.1 作为“一等公民”的channel
  • 16.3.2 channel与select结合使用的惯用法
  • 16.4 本章小结
  • 第17章 泛型
  • 17.1 Go泛型设计演化简史
  • 17.2 Go泛型语法
  • 17.2.1 例子:返回切片中值最大的元素
  • 17.2.2 类型参数
  • 17.2.3 类型约束
  • 17.3 本章小结
  • 第18章 测试
  • 18.1 Go测试框架
  • 18.2 测试的组织
  • 18.2.1 测试文件使用的包名
  • 18.2.2 表驱动测试
  • 18.2.3 最小测试单元
  • 18.2.4 将顶层测试函数作为测试套件
  • 18.2.5 将子测试视为测试用例
  • 18.3 示例测试
  • 18.4 测试覆盖率
  • 18.5 性能基准测试
  • 18.5.1 编写基准测试
  • 18.5.2 并行执行的基准测试
  • 18.5.3 建立性能基准
  • 18.6 本章小结
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。