通过示例学 Golang 2020 中文版【翻译完成】


原文:GolangByExample

协议:CC BY-NC-SA 4.0

阶段:机翻(1)

人最大的痛苦就是说一些自己都不相信的话。——燕京学堂鹿会

  • 在线阅读
  • 在线阅读(Gitee)
  • ApacheCN 学习资源

目录

  • 通过示例学 Golang 2020 中文版
  • 关于 Golang
    • 关于 Golang
    • GO 的安装
    • 设置工作区和你好世界程序
  • 变量
    • 变量
    • 理解var关键字
    • 变量的作用域
    • 变量和常量的命名约定
    • 理解:=符号或短变量声明
    • 你好世界
  • 常量
    • 常量
    • 常量在声明后可以重新赋值吗
    • 内/外作用域中的常量
    • 全局和局部常量
    • 类型化和非类型化常量
    • 声明常量
    • 字符串常量
    • 数字/整数/浮点常量
    • 布尔常量
    • 字符常量
    • 多个常量声明
    • 常量映射
    • 常量结构
    • 常量数组或切片
  • 条件和循环
    • 理解if-else语句
    • for循环
    • switch语句
    • Switch语句的fallthrough关键字
    • 了解for-range循环——完整指南
    • goto语句
  • 包/模块
    • 包和模块——第 1 部分
    • 包和模块——第 2 部分
    • 模块
    • go.mod文件中的直接依赖与间接依赖
    • go.mod文件手动下载依赖项
    • 库版本或依赖项的选择
    • 从不同本地模块导入包
    • 导入同一模块中的包
    • go mod tidy做了什么
    • 为您的项目或模块添加依赖项
    • 可执行和不可执行模块
    • 用于go.mod文件中的依赖项的//indirect
    • 了解模块名称或模块导入路径
    • 模块的供应商依赖关系
    • 了解go.sumgo.mod文件
    • 包与模块
    • 移除模块的依赖关系
    • 初始化函数
    • Golang 程序的执行顺序
    • 嵌套包
    • 包名和目录/文件夹名——它们需要相同吗
    • 导入的空白标识符
    • 导入包时导入相同的包名或别名
  • 数组/切片
    • 了解数组——完整指南
    • 切片
    • 二维和多维数组和切片
    • 复制数组或切片
    • 迭代数组和切片的不同方法
    • 检查一个项目是否存在于切片中
    • 在切片中查找和删除
    • 在数组中查找和删除
    • 打印数组或切片元素
    • 声明/初始化/创建数组或切片
    • 将数组/切片转换为 JSON
    • 追加或添加到切片或数组
    • 结构切片
    • 映射切片
    • 通道的切片或数组
    • 布尔值的切片或数组
    • 创建整数切片或数组
    • 创建浮点切片或数组
    • 创建字符串切片或数组
    • 排序切片的一部分
    • 将一个切片追加或添加到另一个切片
  • 映射
    • 迭代映射的不同方法
    • 映射的长度
    • 映射
    • 一种检查映射中是否存在键的有效方法
    • 更新映射中的一个键
    • 映射允许的键和值类型
    • 创建/初始化/声明映射
    • 映射和 JSON 的转换
    • 将映射转换为 JSON
    • 将 JSON 转换为映射
    • 如何检查映射是否包含键
  • 结构
    • 结构
    • 声明或创建/初始化结构变量
    • 指向结构的指针
    • 漂亮地打印结构变量
    • 结构的导出和未导出字段
    • 结构中的匿名字段
    • 检查两个结构是否相等或结构相等性
    • 访问和设置结构字段
    • 嵌套结构
    • 结构字段元数据或标记
    • 结构与 JSON 的转换
    • 如何初始化带有另一个嵌套结构的结构
    • 如何初始化具有数组或切片字段的结构
    • 如何从另一个包访问结构
  • 方法
    • 方法
    • 方法的指针接收器
    • 非结构类型的方法
    • 方法链
  • 接口
    • 接口
    • 将接口作为参数传递给函数
    • 接口到结构
    • 嵌入接口
    • 接口比较
    • 接口的好处
    • 实现接口时方法中的指针与值接收器
    • 声明和实现接口
    • 接口的隐式实现
    • 实现多个接口的类型
    • 打印接口的基础类型和值
    • 接口的内部工作原理
    • 实现接口的非结构自定义类型
    • 接口的零值
    • 访问接口的底层变量
  • 内置包
    • 复制函数
    • 追加函数
  • 上下文
    • 使用上下文包——完整指南
  • GO 安装/设置
    • 在 MAC 上安装 Golang
    • 在 Linux 上安装 Golang
    • 在 Windows 上安装 Golang
  • 通道
    • 通道
    • 通道内部工作原则
    • 作为函数参数的通道
    • nil通道的发送和接收
    • 通道的关闭操作
    • 通道的方向
    • 通道的长度和容量
    • 通道上的所有操作/函数
    • 从一个通道读取/接收所有值
    • 通道的for-range循环
  • Goroutines
    • Goroutines
    • 获取当前正在运行/活动的 goroutines 的数量
    • 等待所有 Goroutines 完成执行
    • 从 goroutine 接收或获取返回值
    • 从 goroutine 接收或获取多个返回值
    • 暂停 goroutine 的执行,直到活动或事件完成
  • 选择
    • select语句
    • for循环中的select语句
    • 带有默认情况的选择
    • 使用发送操作的选择
    • 使用nil通道的select语句
    • selectswitch
    • select语句中的fallthrough关键字
    • selectbreak语句
    • select语句中执行多个case
    • select或无case的选择
    • 带有超时的select语句
  • 数据类型
    • 所有数据类型及示例
    • 所有基本数据类型
    • 了解整数的大小和范围
    • 所有类型的默认零值及示例
    • 字符
    • 理解uintptr
    • 理解符文
  • 指针
    • 指针
    • 指向指针的指针
    • 解引用指针
    • 指针算法
    • 指针的默认零值
  • iota
    • iota
  • 字符串
    • 检查字符串是否是数字
    • 移除或去除字符串中的所有空格
    • 编写多行字符串
    • 字符串比较
    • 检查字符串是否包含另一个字符串
    • 分割字符串
    • 从一个句子中获取所有单词
    • 通过分隔符连接字符串
    • 检查字符串是否以前缀开头
    • 检查字符串是否以后缀结尾
    • 将字符串转换为小写
    • 将字符串转换为大写
    • 将字符串转换为标题
    • 剪裁字符串的前缀
    • 剪裁字符串的后缀
    • 剪裁字符串的前导空格和尾随空格
    • 计算字符串中子字符串的实例数
    • 查找子字符串第一个实例的索引
    • 使用另一个子字符串替换子字符串的所有实例
    • 使用另一个子串替换子串的一些实例
    • 将字符串中的一个字符替换为另一个字符
    • 查找子字符串最后一个实例的索引
    • Index character in a string in Golang
    • 字符串的所有排列
    • 交换字符串的字符
    • 交换两个字符串
    • 反转一个字符串
    • 查找并删除字符串中的字符
    • 查找并删除子字符串
    • 通过索引删除字符串
    • 创建字符串的计数/重复副本
    • 不区分大小写的字符串比较
    • 字符数或字符串长度
    • 获取任何字母或数字的 ASCII 码/值
    • 迭代字符串
    • 字符串长度
    • 字符的 ASCII 数字
    • 在字符串中写入或打印反斜杠
    • 打印带双引号的字符串
    • 排序字符串
  • 数学
    • 数字的上限
    • 数字的下限
    • 获取浮点数的整数值
    • 数字的舍入
    • 偶数的舍入
    • 移除浮点数的小数点
    • 获取一个数的绝对值
    • 圆周率
    • 一个数的平方根
    • 一个数的立方根
    • 对数
    • 余数或模数
    • 把数字分成整数和分数部分
    • 计算power(x, y)
    • 检查数字是负数还是正数
    • 两个数的最小值
    • 两个数的最大值
  • 随机
    • 生成随机数
    • 生成随机密码
    • 选择数组或切片中的随机元素
    • 选择字符串中的随机字符
    • 打乱字符串
    • 打乱切片或数组
    • 生成n个整数的随机数组/切片
    • 生成给定范围内的数字
    • 生成随机字符串
  • 浮点
    • 将字符串解析为浮点
  • 布尔值
    • 解析布尔值或检查给定的字符串是否是布尔值
    • 布尔值的格式说明符或打印布尔值
  • 同步
    • 了解等待组
  • 循环
    • 实现while循环
  • 函数
    • IIF 或立即调用函数
    • 函数闭包
    • 将函数作为参数传递给另一个函数
    • 从函数返回函数
    • 向的函数传递可变数量的参数
    • 方法与函数的区别
    • 匿名函数
    • 高阶函数
    • 用户定义函数类型
    • 从函数返回多个值
    • 函数
    • 如何从另一个包调用函数
  • 延迟
    • defer关键字
    • 延迟 gorroutine
    • 延迟函数的用例
    • 延迟中的内联函数
    • 延迟参数的求值
    • 延迟中的自定义函数
    • 延迟的工作原理
    • 延迟函数和命名返回值
    • 多重延迟函数
    • 延迟和方法
    • main()函数中的延迟
  • 恐慌与恢复
    • 恐慌与恢复
    • 在不同函数中恢复恐慌
    • 延迟和恐慌
    • 运行时异常恐慌
    • 恐慌与格式字符串
    • 从恐慌中恢复
    • 恢复恐慌时函数的返回值
    • recover()函数的返回值
    • 恐慌的栈跟踪
    • 如何创建恐慌
    • recover()函数示例
    • 恐慌时会发生什么
    • 通过调用panic()函数来创建恐慌
    • Base64 编码/解码
  • 通用文章
    • 使用深度分析仪测量newrelic实例
    • Redis 客户端示例
    • Redis 客户端集群示例
    • 映射:不安全的并发使用
    • 十六进制和八进制
    • 双引号、单引号和反引号
    • 客户端超时:所有主要类型的客户端超时
    • 生成 UUID/GUID
    • 服务器错误——500 vs 502 vs 503 vs 504
    • 在控制台中打印/输出彩色文本
    • 打印/输出粗体文本
    • 打印/输出斜体文本
    • 打印/输出带背景的文本
    • 打印/输出划掉的文本
    • 打印/输出带有下划线的文本
    • 格式化消息而不打印
    • 关于 Base64 编码/解码的全部内容——完整指南
    • 理解multipart/form-data内容类型
  • 面向对象编程
    • OOP:继承完整指南
    • 使用结构(嵌入)的继承
    • 使用接口的继承
    • 使用接口+结构的继承
    • 面向对象程序设计:多态性的完全指南
    • 编译时多态性
    • 运行时多态性
    • 函数/方法重载(替代/变通方法)
    • 抽象类:完整指南
    • 封装
  • 协议缓冲区
    • 协议缓冲区和开始:入门
  • fmt
    • printlnprintfprint
    • 理解Errorf()函数
    • 理解Fprintf()函数
    • 理解Fprint()函数
    • 理解Fprintln()函数
    • 理解Println()函数
    • 理解Printf()函数
    • 理解Print()函数
  • GRPC
    • GRPC 和 REST 的区别
  • 设计模式
    • 所有设计模式
    • 抽象工厂设计模式
    • 构建器模式
    • 工厂设计模式
    • 对象池设计模式
    • 原型模式
    • 单例设计模式
    • 责任链设计模式
    • 命令设计模式
    • 迭代器设计模式
    • 中介设计模式
    • 备忘录设计模式
    • 空对象设计模式
    • 观察者设计模式
    • 状态设计模式
    • 策略设计模式
    • 模板方法设计模式
    • 访客设计模式
    • 适配器设计模式
    • 桥接设计模式
    • 组合设计模式
    • 装饰器设计模式
    • 外观设计模式
    • 享元设计模式
    • 代理设计模式
  • 文件
    • 逐字读取一个大文件
    • 逐行读取一个大文件
    • 将文件读入变量
    • 写入文件
    • 追加到现有文件
    • 删除文件
    • 删除/移除文件夹
    • 更改文件的修改/更新时间和访问时间
    • 重命名文件或文件夹
    • 检查文件是否在目录中
    • 创建一个空文件
    • 检查是否存在文件或目录
    • 迭代所有文件和文件夹中的路径
    • 获取当前工作目录
    • 触摸 Golang 中的文件
    • 将文件从一个位置移动到另一个位置或命令mv
    • 获取文件名、大小、权限位、模式、修改时间
    • 制作文件的副本
  • 文件夹/目录
    • 创建目录或文件夹
    • cd命令或更改当前工作目录
  • 验证
    • 验证结构中字段的存在性
    • 验证结构中整数的范围
  • 时间
    • 了解时间和日期——完整指南
    • 表示 DOB
    • 获取 DOB
    • 当前时间戳
    • 时间/日期格式
    • 时间转换
    • 时间解析
    • 两个时间值的时间差
    • 获取不同时区的当前时间和日期
    • 在不同时区之间转换时间
    • 了解时间包中的持续时间
    • 时间的加减
    • 将 Unix 时间戳转换为时间
    • 日期
    • 创建新的时间实例
  • 类型转换
    • 将浮点转换为整数
    • int转换为float
    • float32float64之间的转换
  • 图像
    • 从网址下载图像或文件
  • OS
    • 执行 Shell 文件
    • 列出所有环境变量
    • 设置或取消设置或获取环境变量
    • 检查是否设置了环境变量
    • 检测操作系统
    • 获取主机名
    • 返回退出状态代码
    • 执行操作系统/系统命令
    • 获取当前用户名
    • 获取当前用户的主目录
    • 加载.env或环境文件
  • net/http
    • 使用net/http包获取查询参数
    • net/http包——检测超时
    • 实现基本的 HTTP 服务器
    • 从传入的 HTTP 请求中获取请求头
    • 为传入的 HTTP 请求设置响应头
    • 获取传出 HTTP 请求的响应头
    • 为传出的 HTTP 请求设置请求头
    • 检查特定的头是否存在于 HTTP 请求中
    • 规范的 HTTP 头部键含义
    • 从一个 HTTP 请求中获取 JSON 请求体
    • 从传入的 HTTP 请求中获取客户端的用户代理
    • 带基本认证的 HTTP 客户端/服务器
    • 解析application/x-www-form-urlencoded请求体的 HTTP 服务器
    • 发送x-www-form-urlencoded请求体的 HTTP 客户端
    • 在请求体中发送/接收 JPEG 文件的 HTTP 示例
    • 在请求体中发送/接收 PDF 文件的 HTTP 示例
    • 在请求体中发送/接收 PNG 文件的 HTTP 示例
    • HTTP 客户端/服务器的multipart/form-data请求体示例
    • 发送/接收application/oct-stream请求体
    • 为什么响应体已关闭
    • 在发出 HTTP 请求时设置超时
    • 验证 HTTP 请求体中的整数范围
    • 不跟随重定向的 HTTP 客户端
    • 理解Set-Cookie响应头
    • CookieJar
    • Cookie
    • 读取 HTTP Cookie
    • 设置 HTTP Cookie
    • 返回 400(错误请求)状态代码
    • 返回 404(找不到资源)状态代码
    • 在 HTTP 响应中返回 401(未授权)状态代码
    • 在 HTTP 响应中返回 403(禁止)状态代码
    • 在 HTTP 响应中返回 200(OK)状态代码
    • 返回 201(已创建)状态代码
    • 返回 500(内部服务器错误)状态代码
    • 如何设置 HTTP 响应的状态码
    • 在 HTTP 响应中返回 JSON 正文
    • 返回 202(已接受)
    • 在 HTTP 响应中返回纯文本正文
    • 在 HTTP 响应中返回图像或文件
    • 解析网址并提取所有部分
    • 从字符串中提取网址
    • 将查询参数字符串转换为查询参数哈希
    • 从网址获取完整的主机名和端口
    • 从网址获取或提取查询参数
  • 错误
    • 错误
    • 错误——高级
    • 创建错误的不同方法
    • 比较错误或错误相等性
    • 从错误或错误断言获取基础类型
    • 错误的包装和取消包装
    • 忽略错误
  • 数据结构
    • 所有数据结构
    • 队列
    • 集合实现
    • 链表
    • 双向链表
    • 二叉查找树
    • 迭代二叉查找树
    • 最小堆
    • 最大堆
    • TRIE 实现方式
  • 整数
    • 反转数字或整数
    • 实现自己的Atoi()函数
    • 检查一个数字是否是回文
    • 求数字的下一个排列
  • 字符串
    • 无重复字符的最长子串
    • 字符串中最长的回文子串
    • 生成有效的括号
    • 检查有效括号
    • 字符串内最长的有效括号子字符串
    • 通配符匹配或正则表达式匹配
    • 相加两个二进制数
  • 数组
    • 在数组中找到总和为目标数字的两个数字
    • 两个排序数组的中位数
    • 查找数组中的所有零和三元组
    • 查找数组中的所有总和为目标数的三元组
    • 使用数组中的三个数字,找出最接近目标数的和
    • 查找int数组中第一个缺少的正整数
    • 在排序和旋转数组中查找枢轴索引
    • 在排序和旋转数组中搜索
    • 查找排序数组中目标元素的第一个和最后一个位置
    • 雨水收集问题
    • 组合异序词
    • 合并重叠间隔
    • 排序 0、1 和 2 的数组
    • 跳跃游戏
    • 删除排序数组中的重复项
  • 矩阵
    • 螺旋矩阵问题
    • 顺时针旋转对称矩阵或图像
  • 算法
    • LRU 高速缓存实现
  • 链表
    • 将单链表转换为数组
    • 将单链表转换为循环链表
    • 检查链表是否是循环的
    • 在的单链表中删除正数第k个节点
    • 在单链表中删除倒数第k个节点
    • 反转双向链表
    • 相加两个由链表表示的数字
    • 反转链表
    • 反转给定链表的k组中的节点
    • 交换链表中节点对
    • 将排序的链表转换为平衡的 BST
  • 动态规划
    • 两个字符串之间的编辑距离
    • 字符串的交错
  • 游戏
    • 井字游戏
    • 二叉树的层序遍历
    • 二叉树的高度或最大深度
    • 从前序和中序构造二叉树
    • 从后序和中序构造二叉树
  • 二叉查找树
    • 检查给定的树是否是二叉查找树
  • 通用程序
    • 中缀到后缀的转换
    • 后缀表达式的求值
  • 排序算法
    • 堆排序
    • 插入排序
    • 选择排序
    • 冒泡排序
  • 网络
    • 验证 IP 地址
    • 检查 IP 地址是 IPV4 还是 IPV6
    • 从传入的 HTTP 请求中获取 IP 地址
  • 正则表达式
    • 在方括号或字符类内包含点.
    • 正则表达式的连接
    • 正则表达式的交替
    • 匹配全字符串
    • 理解插入符号和美元字符
    • 匹配字符串的前缀或后缀
    • 不区分大小写的正则表达式匹配
    • 匹配原始或字面值字符串
    • 理解点.字符
    • 替换所有匹配正则表达式的字符串
    • 向后引用
    • 正则表达式中的可选运算符或问号?
    • 在正则表达式中匹配数字
    • 在正则表达式中匹配浮点数
    • 理解正则表达式中的花括号
    • 匹配任何字符的正则表达式
    • 在正则表达式中使用变量
  • 记录器
    • 记录器轮换
  • MAC OS 系统
    • 理解 MAC 上的/etc/path文件和/etc/path.d目录
  • JSON
    • 解析 JSON 文件

贡献指南

本项目需要校对,欢迎大家提交 Pull Request。

请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。(改编自维基百科)

联系方式

负责人

  • 飞龙: 562826179

其他

  • 在我们的 apachecn/golang-by-example-2020-zh github 上提 issue.
  • 发邮件到 Email: apachecn@163.com.
  • 在我们的 组织学习交流群 中联系群主/管理员即可.

下载

Docker

docker pull apachecn0/golang-by-example-2020-zh
docker run -tid -p :80 apachecn0/golang-by-example-2020-zh
# 访问 http://localhost:{port} 查看文档

PYPI

pip install golang-by-example-2020-zh
golang-by-example-2020-zh 
# 访问 http://localhost:{port} 查看文档

NPM

npm install -g golang-by-example-2020-zh
golang-by-example-2020-zh 
# 访问 http://localhost:{port} 查看文档

组织介绍

访问我们的主页。

赞助我们

通过平台自带的打赏功能,或点击这里。

相关