目录
- 包和模块——第 1 部分
- 包和模块——第 2 部分
- 模块
- go.mod文件中的直接依赖与间接依赖
- 从go.mod文件手动下载依赖项
- 库版本或依赖项的选择
- 从不同本地模块导入包
- 导入同一模块中的包
- go mod tidy做了什么
- 为您的项目或模块添加依赖项
- 可执行和不可执行模块
- 用于go.mod文件中的依赖项的//indirect
- 了解模块名称或模块导入路径
- 模块的供应商依赖关系
- 了解go.sum和go.mod文件
- 包与模块
- 移除模块的依赖关系
- 初始化函数
- Golang 程序的执行顺序
- 嵌套包
- 包名和目录/文件夹名——它们需要相同吗
- 导入的空白标识符
- 导入包时导入相同的包名或别名
- 了解数组——完整指南
- 切片
- 二维和多维数组和切片
- 复制数组或切片
- 迭代数组和切片的不同方法
- 检查一个项目是否存在于切片中
- 在切片中查找和删除
- 在数组中查找和删除
- 打印数组或切片元素
- 声明/初始化/创建数组或切片
- 将数组/切片转换为 JSON
- 追加或添加到切片或数组
- 结构切片
- 映射切片
- 通道的切片或数组
- 布尔值的切片或数组
- 创建整数切片或数组
- 创建浮点切片或数组
- 创建字符串切片或数组
- 排序切片的一部分
- 将一个切片追加或添加到另一个切片
- 迭代映射的不同方法
- 映射的长度
- 映射
- 一种检查映射中是否存在键的有效方法
- 更新映射中的一个键
- 映射允许的键和值类型
- 创建/初始化/声明映射
- 映射和 JSON 的转换
- 将映射转换为 JSON
- 将 JSON 转换为映射
- 如何检查映射是否包含键
- 结构
- 声明或创建/初始化结构变量
- 指向结构的指针
- 漂亮地打印结构变量
- 结构的导出和未导出字段
- 结构中的匿名字段
- 检查两个结构是否相等或结构相等性
- 访问和设置结构字段
- 嵌套结构
- 结构字段元数据或标记
- 结构与 JSON 的转换
- 如何初始化带有另一个嵌套结构的结构
- 如何初始化具有数组或切片字段的结构
- 如何从另一个包访问结构
- 接口
- 将接口作为参数传递给函数
- 接口到结构
- 嵌入接口
- 接口比较
- 接口的好处
- 实现接口时方法中的指针与值接收器
- 声明和实现接口
- 接口的隐式实现
- 实现多个接口的类型
- 打印接口的基础类型和值
- 接口的内部工作原理
- 实现接口的非结构自定义类型
- 接口的零值
- 访问接口的底层变量
- Goroutines
- 获取当前正在运行/活动的 goroutines 的数量
- 等待所有 Goroutines 完成执行
- 从 goroutine 接收或获取返回值
- 从 goroutine 接收或获取多个返回值
- 暂停 goroutine 的执行,直到活动或事件完成
- select语句
- for循环中的select语句
- 带有默认情况的选择
- 使用发送操作的选择
- 使用nil通道的select语句
- select与switch
- select语句中的fallthrough关键字
- select的break语句
- 在select语句中执行多个case
- 空select或无case的选择
- 带有超时的select语句
- 检查字符串是否是数字
- 移除或去除字符串中的所有空格
- 编写多行字符串
- 字符串比较
- 检查字符串是否包含另一个字符串
- 分割字符串
- 从一个句子中获取所有单词
- 通过分隔符连接字符串
- 检查字符串是否以前缀开头
- 检查字符串是否以后缀结尾
- 将字符串转换为小写
- 将字符串转换为大写
- 将字符串转换为标题
- 剪裁字符串的前缀
- 剪裁字符串的后缀
- 剪裁字符串的前导空格和尾随空格
- 计算字符串中子字符串的实例数
- 查找子字符串第一个实例的索引
- 使用另一个子字符串替换子字符串的所有实例
- 使用另一个子串替换子串的一些实例
- 将字符串中的一个字符替换为另一个字符
- 查找子字符串最后一个实例的索引
- Index character in a string in Golang
- 字符串的所有排列
- 交换字符串的字符
- 交换两个字符串
- 反转一个字符串
- 查找并删除字符串中的字符
- 查找并删除子字符串
- 通过索引删除字符串
- 创建字符串的计数/重复副本
- 不区分大小写的字符串比较
- 字符数或字符串长度
- 获取任何字母或数字的 ASCII 码/值
- 迭代字符串
- 字符串长度
- 字符的 ASCII 数字
- 在字符串中写入或打印反斜杠
- 打印带双引号的字符串
- 排序字符串
- 数字的上限
- 数字的下限
- 获取浮点数的整数值
- 数字的舍入
- 偶数的舍入
- 移除浮点数的小数点
- 获取一个数的绝对值
- 圆周率
- 一个数的平方根
- 一个数的立方根
- 对数
- 余数或模数
- 把数字分成整数和分数部分
- 计算power(x, y)
- 检查数字是负数还是正数
- 两个数的最小值
- 两个数的最大值
- 恐慌与恢复
- 在不同函数中恢复恐慌
- 延迟和恐慌
- 运行时异常恐慌
- 恐慌与格式字符串
- 从恐慌中恢复
- 恢复恐慌时函数的返回值
- recover()函数的返回值
- 恐慌的栈跟踪
- 如何创建恐慌
- recover()函数示例
- 恐慌时会发生什么
- 通过调用panic()函数来创建恐慌
- Base64 编码/解码
- 使用深度分析仪测量newrelic实例
- Redis 客户端示例
- Redis 客户端集群示例
- 映射:不安全的并发使用
- 十六进制和八进制
- 双引号、单引号和反引号
- 客户端超时:所有主要类型的客户端超时
- 生成 UUID/GUID
- 服务器错误——500 vs 502 vs 503 vs 504
- 在控制台中打印/输出彩色文本
- 打印/输出粗体文本
- 打印/输出斜体文本
- 打印/输出带背景的文本
- 打印/输出划掉的文本
- 打印/输出带有下划线的文本
- 格式化消息而不打印
- 关于 Base64 编码/解码的全部内容——完整指南
- 理解multipart/form-data内容类型
- println、printf、print
- 理解Errorf()函数
- 理解Fprintf()函数
- 理解Fprint()函数
- 理解Fprintln()函数
- 理解Println()函数
- 理解Printf()函数
- 理解Print()函数
- 所有设计模式
- 抽象工厂设计模式
- 构建器模式
- 工厂设计模式
- 对象池设计模式
- 原型模式
- 单例设计模式
- 责任链设计模式
- 命令设计模式
- 迭代器设计模式
- 中介设计模式
- 备忘录设计模式
- 空对象设计模式
- 观察者设计模式
- 状态设计模式
- 策略设计模式
- 模板方法设计模式
- 访客设计模式
- 适配器设计模式
- 桥接设计模式
- 组合设计模式
- 装饰器设计模式
- 外观设计模式
- 享元设计模式
- 代理设计模式
- 逐字读取一个大文件
- 逐行读取一个大文件
- 将文件读入变量
- 写入文件
- 追加到现有文件
- 删除文件
- 删除/移除文件夹
- 更改文件的修改/更新时间和访问时间
- 重命名文件或文件夹
- 检查文件是否在目录中
- 创建一个空文件
- 检查是否存在文件或目录
- 迭代所有文件和文件夹中的路径
- 获取当前工作目录
- 触摸 Golang 中的文件
- 将文件从一个位置移动到另一个位置或命令mv
- 获取文件名、大小、权限位、模式、修改时间
- 制作文件的副本
- 了解时间和日期——完整指南
- 表示 DOB
- 获取 DOB
- 当前时间戳
- 时间/日期格式
- 时间转换
- 时间解析
- 两个时间值的时间差
- 获取不同时区的当前时间和日期
- 在不同时区之间转换时间
- 了解时间包中的持续时间
- 时间的加减
- 将 Unix 时间戳转换为时间
- 日期
- 创建新的时间实例
- 执行 Shell 文件
- 列出所有环境变量
- 设置或取消设置或获取环境变量
- 检查是否设置了环境变量
- 检测操作系统
- 获取主机名
- 返回退出状态代码
- 执行操作系统/系统命令
- 获取当前用户名
- 获取当前用户的主目录
- 加载.env或环境文件
- 使用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 响应中返回图像或文件
- 解析网址并提取所有部分
- 从字符串中提取网址
- 将查询参数字符串转换为查询参数哈希
- 从网址获取完整的主机名和端口
- 从网址获取或提取查询参数
- 在数组中找到总和为目标数字的两个数字
- 两个排序数组的中位数
- 查找数组中的所有零和三元组
- 查找数组中的所有总和为目标数的三元组
- 使用数组中的三个数字,找出最接近目标数的和
- 查找int数组中第一个缺少的正整数
- 在排序和旋转数组中查找枢轴索引
- 在排序和旋转数组中搜索
- 查找排序数组中目标元素的第一个和最后一个位置
- 雨水收集问题
- 组合异序词
- 合并重叠间隔
- 排序 0、1 和 2 的数组
- 跳跃游戏
- 删除排序数组中的重复项
- 将单链表转换为数组
- 将单链表转换为循环链表
- 检查链表是否是循环的
- 在的单链表中删除正数第k个节点
- 在单链表中删除倒数第k个节点
- 反转双向链表
- 相加两个由链表表示的数字
- 反转链表
- 反转给定链表的k组中的节点
- 交换链表中节点对
- 将排序的链表转换为平衡的 BST
- 在方括号或字符类内包含点.
- 正则表达式的连接
- 正则表达式的交替
- 匹配全字符串
- 理解插入符号和美元字符
- 匹配字符串的前缀或后缀
- 不区分大小写的正则表达式匹配
- 匹配原始或字面值字符串
- 理解点.字符
- 替换所有匹配正则表达式的字符串
- 向后引用
- 正则表达式中的可选运算符或问号?
- 在正则表达式中匹配数字
- 在正则表达式中匹配浮点数
- 理解正则表达式中的花括号
- 匹配任何字符的正则表达式
- 在正则表达式中使用变量
贡献指南
本项目需要校对,欢迎大家提交 Pull Request。
请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。(改编自维基百科)
其他
- 在我们的 apachecn/golang-by-example-2020-zh github 上提 issue.
- 发邮件到 Email:
apachecn@. - 在我们的 组织学习交流群 中联系群主/管理员即可.
下载
Docker
docker pull apachecn0/golang-by-example-2020-zh
docker run -tid -p <port>:80 apachecn0/golang-by-example-2020-zh
# 访问 http://localhost:{port} 查看文档PYPI
pip install golang-by-example-2020-zh
golang-by-example-2020-zh <port>
# 访问 http://localhost:{port} 查看文档NPM
npm install -g golang-by-example-2020-zh
golang-by-example-2020-zh <port>
# 访问 http://localhost:{port} 查看文档
















