💡
mastering_go_second
  • 介绍
  • 1 Go与操作系统
    • 01.1 Go的历史
    • 01.2 Go的未来
    • 01.3 Go的优点
      • 01.3.1 Go是完美的么
      • 01.3.2 什么是预处理器
      • 01.3.3 godoc
    • 01.4 编译Go代码
  • 2 理解 Go 的内部构造
    • Go 编译器
    • Go 的垃圾回收
      • 三色算法
      • 有关 Go 垃圾收集器操作的更多信息
      • Maps, silces 与 Go 垃圾回收器
      • Unsafe code
      • 有关 unsafe 包
      • 另一个 usafe 包的例子
    • 从 Go 调用 C 代码
      • 在同一文件用 Go 调用 C 代码
      • 在单独的文件用 Go 调用 C 代码
    • 从 C 调用 Go 代码
      • Go 包
      • C 代码
    • defer 关键字
      • 用 defer 打印日志
    • Panic 和 Recover
      • 单独使用 Panic 函数
    • 两个好用的 UNIX 工具
      • strace
      • dtrace
    • 配置 Go 开发环境
    • go env 命令
    • Go 汇编器
    • 节点树
    • 进一步了解 Go 构建
    • 创建 WebAssembly 代码
      • 对 Webassembly 的简单介绍
      • 为什么 WebAssembly 很重要
      • Go 与 WebAssembly
      • 示例
      • 使用创建好的 WebAssembly 代码
    • Go 编码风格建议
    • 练习和相关链接
    • 本章小结
  • 3 Go基本数据类型
    • 03.1 Go循环
      • 03.1.1 for循环
      • 03.1.2 while循环
      • 03.1.3 range关键字
      • 03.1.4 for循环代码示例
    • 03.3 Go切片
      • 03.3.1 切片基本操作
      • 03.3.2 切片的扩容
      • 03.3.3 字节切片
      • 03.3.4 copy()函数
      • 03.3.5 多维切片
      • 03.3.6 使用切片的代码示例
      • 03.3.7 使用sort.Slice()排序
    • 03.4 Go 映射(map)
      • 03.4.1 Map值为nil的坑
      • 03.4.2 何时该使用Map?
    • 03.5 Go 常量
      • 03.5.1 常量生成器:iota
    • 03.6 Go 指针
    • 03.7 时间与日期的处理技巧
      • 03.7.1 解析时间
      • 03.7.2 解析时间的代码示例
      • 03.7.3 解析日期
      • 03.7.4 解析日期的代码示例
      • 03.7.5 格式化时间与日期
    • 03.8 延伸阅读
    • 03.9 练习
    • 03.10 本章小结
  • 8 Unix 系统编程
    • 08.1 关于 Unix 进程
    • 08.2 flag 包
    • 08.3 viper 包
      • 08.3.1 一个简单的 viper 实例
      • 08.3.2 从 flag 转到 viper
      • 08.3.3 读取 JSON 配置文件
      • 08.3.4 读取 YAML 配置文件
  • 9 并发-Goroutines,Channel和Pipeline
    • 09.1 关于进程,线程和Go协程
      • 09.1.1 Go调度器
      • 09.1.2 并发与并行
    • 09.2 Goroutines
      • 09.2.1 创建一个Goroutine
      • 09.2.2 创建多个Goroutine
    • 09.3 优雅地结束goroutines
      • 09.3.1 当Add()和Done()的数量不匹配时会发生什么?
    • 09.4 Channel(通道)
      • 09.4.1 通道的写入
      • 09.4.2 从通道接收数据
      • 09.4.3 通道作为函数参数传递
    • 09.5 管道
    • 09.6 延展阅读
    • 09.7 练习
    • 09.8 本章小结
Powered by GitBook
On this page
  • 在线阅读
  • 交流社区
  • 翻译进度
  • 规则&&Fork&&PR
  • 致谢
  • 授权许可
  • Go学习资料及社区(持续更新中。。。)

Was this helpful?

介绍

Next1 Go与操作系统

Last updated 4 years ago

Was this helpful?

Mastering Go 第二版中文版来袭!

在线阅读

  • 看云:

  • gitbook:

第一版在广大Golang爱好者的大力支持下已经完成release,我们开始第二版的翻译。

领取翻译章节的话,先起一个issue,表明领取的章节,然后给一个大致的DDL,及时同步翻译进展,以方便其他人了解进度。

项目刚刚启动,对初学者来说可以 强迫自己读一些英文原著,也是不错的学习机会;golang大佬也可以对翻译的效果给予指导。

有兴趣的可加入交流群,或者通过邮件沟通:hantmac@outlook.com(发邮件领取第二版英文电子版即可参与)

交流社区

有兴趣的读者可加golang交流群,大家一起交流。

关注公众号Go_Official_Blog 了解更多官方资讯。

翻译进度

持续更新中。。。。

规则&&Fork&&PR

  • 章节命名规则:举例,第一章第一节,01.1.md,如果第一节下面还有分支,01.1.1,依次类推;

  • 联系邮箱,取得电子版,获得安排的翻译章节,Fork分支,提交PR;

  • 由多人审核后,合并

致谢

  • 本书原作者:Mihalis Tsoukalos

  • 参与翻译人员

授权许可

Go学习资料及社区(持续更新中。。。)

英文版第二版的 Mastering Go不知不觉上线了,

翻译规则目前先参考第一版,

除特别声明外,本书中的内容使用 (创作共用 署名-相同方式共享3.0 许可协议)授权,代码遵循 (3 项条款的 BSD 许可协议)。

支持 MySQL、PostgreSQL、SQLite3 以及 MsSQL

MongoDB 官方推荐驱动

全功能 ORM (无限接近) 支持 MySQL、PostgreSQL、SQLite3 以及 MsSQL

https://www.packtpub.com/programming/mastering-go-second-edition
https://github.com/hantmac/Mastering_Go_ZH_CN
目录
chapter 1 Go和操作系统
01.0 前言
01.1 Go的历史
01.2 Go的未来
01.3 Go的特性
01.3.1 Go是完美的吗
01.3.2 什么是预处理器
01.3.3 godoc
01.4 编译Go代码
01.5 执行Go代码
01.6 Go的两条规范
01.6.1 package 的导入规则
01.6.2 大括号的唯一位置
01.7 Go package 的下载
01.8 UNIX标准输入,标准输出,标准错误
01.9 关于print
01.10 使用标准输出
01.11 获取用户输入
01.11.1 关于:= 和 =
01.11.2 从标准输入读取数据
01.11.3 操作命令行参数
01.12 错误输出
01.13 写入日志文件
01.13.1 日志级别
01.13.2 日志工具
01.13.3 日志服务器
01.13.4 发送到日志文件
01.13.5 关于log.Fatal()
01.13.6 关于log.panic()
01.13.7 写入指定的日志文件
01.13.8 日志中打印行号
01.14 Go的错误处理
01.14.1 错误类型
01.14.2 错误处理
01.15 使用Docker
01.16 更多练习
01.17 本章小结
chapter 3 Go基本的数据类型
03.1 Go数值类型
03.1.1 整数
03.1.2 浮点数
03.1.3 复数
03.1.4 Go for循环
03.2 Go的循环
03.2.1 for
03.2.2 while
03.2.3 range
03.2.4 for 代码示例
03.3 数组
03.3.1 多维数组
03.3.2 Go数组的缺点
03.4 Go切片
03.4.1 切片的基本操作
03.4.2 切片的自动扩容
03.4.3 byte切片
03.4.4 copy()函数
03.4.5 多维切片
03.4.6 切片使用的代码示例
03.4.7 使用sort.slice()排序
03.4.8 为切片追加数组
03.5 Go map
03.5.1 map值为nil的坑
03.5.2 什么时候该用map
03.6 Go常量
03.6.1 常量生成器:iota
03.7 Go指针
03.7.1 为什么使用指针
03.8 时间与日期处理技巧
03.8.1 解析时间
03.8.2 解析时间的代码示例
03.8.3 解析日期
03.8.4 解析日期的代码示例
03.8.5 格式化时间与日期
03.8.6 测量执行时间
03.8.7 测量Go的垃圾回收速度
03.9 有用的链接和练习
03.10 本章小结
chapter 9 并发-goroutine,channel和pipelines
09.1 关于进程,线程与goroutine
09.1.1 Go scheduler
09.1.2 并发与并行
09.2 goroutine
09.2.1 创建goroutine
09.2.2创建多个goroutine
09.3 优雅地结束goroutine
09.3.1 当Add()和Done()的数量不匹配时会发生什么?
09.4 channel
09.4.1 往通道中写入
09.4.2 从通道中接收
09.4.3 从关闭的channel中读数据会发生什么
09.4.4 通道作为函数参数传递
09.5 管道
09.6 竟态条件
09.7 比较Go和Rust的并发模型
09.8 比较Go和Erlang的并发模型
09.9 其他学习资源
09.10 练习题
09.11 本章小结
Jeremy
calmbryan
newlife
CC BY-SA 3.0 License
BSD 3-Clause License
Go By Example 英文网站
Go By Example 中文网站
GOCN Forum
Go语言中文网
Go walker 强大的Go在线API文档
jsonTOGo 好用的json转go struct工具
Go web框架beego
官方代码规范指导
xorm
mgo
gorm
https://www.kancloud.cn/cloud001/golang
https://hantmac.gitbook.io/mastering-go-second/