 Go 入门指南(The way to Go)6 生成代码文档 3.7 其它工具 3.8 Go 性能说明 3.9 与其它语言进行交互 第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 4.2 Go 程序的基本结构和要素 4.3 常量 4.4 变量 4.5 基本类型和运算符 4.6 字符串 4.7 strings 和 strconv 包 4.8 时间和日期 4.9 指针 - 2 - 本文档使用 书栈(BookStack 类型的切片 8.5 map 的排序 8.6 将 map 的键值对调 第9章:包(package) 9.1 标准库概述 9.2 regexp 包 9.3 锁和 sync 包 - 3 - 本文档使用 书栈(BookStack.CN) 构建 9.4 精密计算和 big 包 9.5 自定义包和可见性 9.6 为自定义包使用 godoc 9.7 使用 go install 安装自定义包 第11章:接口(interface)与反射(reflection) 11.1 接口是什么 11.2 接口嵌套接口 11.3 类型断言:如何检测和转换接口变量的类型 11.4 类型判断:type-switch 11.5 测试一个值是否实现了某个接口 11.6 使用方法集与接口 11.7 第一个例子:使用 Sorter 接口排序 11.8 第二个例子:读和写 11.9 空接口 11.100 码力 | 466 页 | 4.44 MB | 1 年前3 Go 入门指南(The way to Go)6 生成代码文档 3.7 其它工具 3.8 Go 性能说明 3.9 与其它语言进行交互 第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 4.2 Go 程序的基本结构和要素 4.3 常量 4.4 变量 4.5 基本类型和运算符 4.6 字符串 4.7 strings 和 strconv 包 4.8 时间和日期 4.9 指针 - 2 - 本文档使用 书栈(BookStack 类型的切片 8.5 map 的排序 8.6 将 map 的键值对调 第9章:包(package) 9.1 标准库概述 9.2 regexp 包 9.3 锁和 sync 包 - 3 - 本文档使用 书栈(BookStack.CN) 构建 9.4 精密计算和 big 包 9.5 自定义包和可见性 9.6 为自定义包使用 godoc 9.7 使用 go install 安装自定义包 第11章:接口(interface)与反射(reflection) 11.1 接口是什么 11.2 接口嵌套接口 11.3 类型断言:如何检测和转换接口变量的类型 11.4 类型判断:type-switch 11.5 测试一个值是否实现了某个接口 11.6 使用方法集与接口 11.7 第一个例子:使用 Sorter 接口排序 11.8 第二个例子:读和写 11.9 空接口 11.100 码力 | 466 页 | 4.44 MB | 1 年前3
 Go 入门指南(The way to Go)用更少的代码,更短的编译时间,创建运行更快的程序,享受更多 的乐趣 对于学习 Go 编程语言的爱好者来说,这本书无疑是最适合你的一本书籍,这里包含了当前最全面的学习 资源。本书通过对官方的在线文档、名人博客、书籍、相关文章以及演讲的资料收集和整理,并结合我自 身在软件工程、编程语言和数据库开发的授课经验,将这些零碎的知识点组织成系统化的概念和技术分类 来进行讲解。 随着软件规模的不断扩 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦 涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提 倡通过接口来针对面向对象编程,通过 goroutine 和 channel 来支持并发和并行编程。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你 在学习 行比较(书中会使用大家所熟知的缩写 “OO” 来表示面向对象)。 本书将会从最基础的概念讲起,同时也会讨论一些类似在应用 goroutine 和 channel 时有多少种不同的模 Go入门指南 - 1 - 本文档使用 看云 构建 式,如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来 开发 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论0 码力 | 380 页 | 2.97 MB | 1 年前3 Go 入门指南(The way to Go)用更少的代码,更短的编译时间,创建运行更快的程序,享受更多 的乐趣 对于学习 Go 编程语言的爱好者来说,这本书无疑是最适合你的一本书籍,这里包含了当前最全面的学习 资源。本书通过对官方的在线文档、名人博客、书籍、相关文章以及演讲的资料收集和整理,并结合我自 身在软件工程、编程语言和数据库开发的授课经验,将这些零碎的知识点组织成系统化的概念和技术分类 来进行讲解。 随着软件规模的不断扩 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦 涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提 倡通过接口来针对面向对象编程,通过 goroutine 和 channel 来支持并发和并行编程。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你 在学习 行比较(书中会使用大家所熟知的缩写 “OO” 来表示面向对象)。 本书将会从最基础的概念讲起,同时也会讨论一些类似在应用 goroutine 和 channel 时有多少种不同的模 Go入门指南 - 1 - 本文档使用 看云 构建 式,如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来 开发 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论0 码力 | 380 页 | 2.97 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 我感觉我仍然是一 个Go新手程序员。 我放弃了写那本书。 放弃?《Go语言101》现在不是已经完成了 吗? 那本曾经计划要写的书不是《Go语言101》。 放弃那本书的写作计划后,我通 过阅读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪 列表和一些Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关 于Go编程细节中的困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个 于各种其它主 题的文章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和 使用Go。 持有这种态度阻止了我更深刻地理解Go。0 码力 | 821 页 | 956.82 KB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 我感觉我仍然是一 个Go新手程序员。 我放弃了写那本书。 放弃?《Go语言101》现在不是已经完成了 吗? 那本曾经计划要写的书不是《Go语言101》。 放弃那本书的写作计划后,我通 过阅读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪 列表和一些Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关 于Go编程细节中的困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个 于各种其它主 题的文章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和 使用Go。 持有这种态度阻止了我更深刻地理解Go。0 码力 | 821 页 | 956.82 KB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a- Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 我感觉我仍然是一个Go新手程序员。 我放弃了写那本书。 放弃?《Go语言101》现在不是已经完成了吗? 那本曾经计划要写的书不是《Go语言101》。 放弃那本书的写作计划后,我通过阅 读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪列表和一些 Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关于Go编程细节中的 困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个主题的 关于各种其它主题的文 章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的值,主 要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 第0章:关于《Go语言101》 4 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使用0 码力 | 591 页 | 21.40 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a- Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 我感觉我仍然是一个Go新手程序员。 我放弃了写那本书。 放弃?《Go语言101》现在不是已经完成了吗? 那本曾经计划要写的书不是《Go语言101》。 放弃那本书的写作计划后,我通过阅 读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪列表和一些 Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关于Go编程细节中的 困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个主题的 关于各种其它主题的文 章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的值,主 要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 第0章:关于《Go语言101》 4 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使用0 码力 | 591 页 | 21.40 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 我感觉我仍然是一个 Go新手程序员。 我放弃了写那本书。 放弃?《Go语言101》现在不是已经完成了吗? 那本曾经计划要写的书不是《Go语言101》。 放弃那本书的写作计划后,我通 过阅读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪 列表和一些Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关于 Go编程细节中的困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个主 关于各种其它主题 的文章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使 用Go。 持有这种态度阻止了我更深刻地理解Go。0 码力 | 608 页 | 1.08 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 我感觉我仍然是一个 Go新手程序员。 我放弃了写那本书。 放弃?《Go语言101》现在不是已经完成了吗? 那本曾经计划要写的书不是《Go语言101》。 放弃那本书的写作计划后,我通 过阅读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪 列表和一些Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关于 Go编程细节中的困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个主 关于各种其它主题 的文章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使 用Go。 持有这种态度阻止了我更深刻地理解Go。0 码力 | 608 页 | 1.08 MB | 1 年前3
 Go Web编程4.表单 4.1 处理表单的输入 4.2 验证表单的输入 4.3 预防跨站脚本 4.4 防止多次递交表单 4.5 处理文件上传 4.6 小结 5.访问数据库 5.1 database/sql接口 5.2 使用MySQL数据库 5.3 使用SQLite数据库 5.4 使用PostgreSQL数据库 5.5 使用beedb库进行ORM开发 5.6 NOSQL数据库操作 5.7 小结 6.session和数据存储 你也可以带上参数,详情 请参考go help testflag go doc go doc 很多人说go不需要任何的第三方文档,例如chm手册之类的(其实我已经做了一个了,chm手册),因为它内部就有一 个很强大的文档工具。 如何查看相应package的文档呢? 例如builtin包,那么执行go doc builtin 如果是http包,那么执行go doc net/http 查看某一个包里面的函数,那么执行godoc -http=:8080。然后在浏览器中打开 127.0.0.1:8080,你将会看到一个golang.org的本地copy版本,通过它你可以查询pkg文档等其它内容。如果你设 置了GOPATH,在pkg分类下,不但会列出标准包的文档,还会列出你本地GOPATH中所有项目的相关文档,这对于经常 被墙的用户来说是一个不错的选择。 其它命令 其它命令 go还提供了其它很多的工具,例如下面的这些工具 go fix0 码力 | 295 页 | 5.91 MB | 1 年前3 Go Web编程4.表单 4.1 处理表单的输入 4.2 验证表单的输入 4.3 预防跨站脚本 4.4 防止多次递交表单 4.5 处理文件上传 4.6 小结 5.访问数据库 5.1 database/sql接口 5.2 使用MySQL数据库 5.3 使用SQLite数据库 5.4 使用PostgreSQL数据库 5.5 使用beedb库进行ORM开发 5.6 NOSQL数据库操作 5.7 小结 6.session和数据存储 你也可以带上参数,详情 请参考go help testflag go doc go doc 很多人说go不需要任何的第三方文档,例如chm手册之类的(其实我已经做了一个了,chm手册),因为它内部就有一 个很强大的文档工具。 如何查看相应package的文档呢? 例如builtin包,那么执行go doc builtin 如果是http包,那么执行go doc net/http 查看某一个包里面的函数,那么执行godoc -http=:8080。然后在浏览器中打开 127.0.0.1:8080,你将会看到一个golang.org的本地copy版本,通过它你可以查询pkg文档等其它内容。如果你设 置了GOPATH,在pkg分类下,不但会列出标准包的文档,还会列出你本地GOPATH中所有项目的相关文档,这对于经常 被墙的用户来说是一个不错的选择。 其它命令 其它命令 go还提供了其它很多的工具,例如下面的这些工具 go fix0 码力 | 295 页 | 5.91 MB | 1 年前3
 Go语言基础
Golang Fundaments且组织得很好,那么算法几乎总是不言自明的。数据结 构,而不是算法,是编程的核心。”——罗伯•派克 • 接口和组合设计(Interface And Composition Design) – 接口赋予程序结构。 – 接口鼓励通过组合进行设计。 – 接口使得并强制清晰划分组件职责。 – 接口的标准化可以建立清晰和一致的期望。 • 面向包的设计(Package-Oriented Design) • Java 语言的脑袋(能用面向对象思路解决问题) 基本知识学习 • 请按 go tour 浏览 – “基础” • 包,变量,函数 • 流程控制语句 • 指针、结构、数组与切片、Map – 方法与接口 – 并发 Hello world! 包与子包 • 包的代码在哪里? – Go标准包,如:math/rand • https://github.com/golang/go/tree/master/src/math/rand https://github.com/spf13/cobra – 包名必须小写且符合Unix文件命令规则 – 包名全称,规则:[git仓库]/[用户]/[仓库路径] • 包里文件 – 源代码 – 测试代码 – API文档 – 其他资源文件 按规则可找到源代码,方便阅读 包导出名 • 包中定义的 – 类型 – 常量 – 变量 – 函数 • 如果首字母大写,则是全局可访问的 函数申明 • 使用 func 关键字申明函数0 码力 | 21 页 | 851.30 KB | 1 年前3 Go语言基础
Golang Fundaments且组织得很好,那么算法几乎总是不言自明的。数据结 构,而不是算法,是编程的核心。”——罗伯•派克 • 接口和组合设计(Interface And Composition Design) – 接口赋予程序结构。 – 接口鼓励通过组合进行设计。 – 接口使得并强制清晰划分组件职责。 – 接口的标准化可以建立清晰和一致的期望。 • 面向包的设计(Package-Oriented Design) • Java 语言的脑袋(能用面向对象思路解决问题) 基本知识学习 • 请按 go tour 浏览 – “基础” • 包,变量,函数 • 流程控制语句 • 指针、结构、数组与切片、Map – 方法与接口 – 并发 Hello world! 包与子包 • 包的代码在哪里? – Go标准包,如:math/rand • https://github.com/golang/go/tree/master/src/math/rand https://github.com/spf13/cobra – 包名必须小写且符合Unix文件命令规则 – 包名全称,规则:[git仓库]/[用户]/[仓库路径] • 包里文件 – 源代码 – 测试代码 – API文档 – 其他资源文件 按规则可找到源代码,方便阅读 包导出名 • 包中定义的 – 类型 – 常量 – 变量 – 函数 • 如果首字母大写,则是全局可访问的 函数申明 • 使用 func 关键字申明函数0 码力 | 21 页 | 851.30 KB | 1 年前3
 GoFrame框架介绍及设计框架介绍 • 框架架构 • 项目初心 框架介绍 GoFrame是一款模块化、高性能、企业级的Go基础开发框架。 • 模块化、松耦合 • 模块丰富、开箱即用 • 简洁易用、快速接入 • 文档详尽、易于维护 • 自顶向下、体系化设计 • 统一框架、统一组件、降低选择成本 • 开发规范、设计模式、代码分层模型 • 强大便捷的开发工具链 • 完善的本地中文化支持 • 设计为团队及企业使用 开发工具链 • 设计模式:MVC、三层架构、工具集 • 应用接口:HTTP/TCP/UDP/RPC Server、终端应用、源码接口 • 数据库类型:通过标准库驱动接口支持多种数据库类型 • 跨平台性:基于Golang开发语言强大跨平台特性 框架介绍-项目初心 工程化建设 统一框架 核心组件 项目架构 设计模式 开发规范 开发文档 开发工具 …… 模块化设计 第二部分 • 复用原则 ,对于开发人员写好代码的 要求会比较高 经典MVC模式 代码分层设计-三层架构模式 表示层 - UI 位于三层构架的最上层,与用户直接接触,主要是B/S中 的 WEB页面,也可以是API接口。 业务逻辑层 - BLL 对具体问题进行逻辑判断与执行操作。 数据访问层 - DAL 实现数据的增删改查等操作,并将操作结果反馈到业务逻辑层 BLL。 模型定义层 - Model 也0 码力 | 37 页 | 8.84 MB | 1 年前3 GoFrame框架介绍及设计框架介绍 • 框架架构 • 项目初心 框架介绍 GoFrame是一款模块化、高性能、企业级的Go基础开发框架。 • 模块化、松耦合 • 模块丰富、开箱即用 • 简洁易用、快速接入 • 文档详尽、易于维护 • 自顶向下、体系化设计 • 统一框架、统一组件、降低选择成本 • 开发规范、设计模式、代码分层模型 • 强大便捷的开发工具链 • 完善的本地中文化支持 • 设计为团队及企业使用 开发工具链 • 设计模式:MVC、三层架构、工具集 • 应用接口:HTTP/TCP/UDP/RPC Server、终端应用、源码接口 • 数据库类型:通过标准库驱动接口支持多种数据库类型 • 跨平台性:基于Golang开发语言强大跨平台特性 框架介绍-项目初心 工程化建设 统一框架 核心组件 项目架构 设计模式 开发规范 开发文档 开发工具 …… 模块化设计 第二部分 • 复用原则 ,对于开发人员写好代码的 要求会比较高 经典MVC模式 代码分层设计-三层架构模式 表示层 - UI 位于三层构架的最上层,与用户直接接触,主要是B/S中 的 WEB页面,也可以是API接口。 业务逻辑层 - BLL 对具体问题进行逻辑判断与执行操作。 数据访问层 - DAL 实现数据的增删改查等操作,并将操作结果反馈到业务逻辑层 BLL。 模型定义层 - Model 也0 码力 | 37 页 | 8.84 MB | 1 年前3
 Go基础语法宝典用于分包和导入 func 用于定义函数和方法 return 用于从函数返回 defer 用于类似析构函数 go 用于并发 select 用于选择不同类型的通讯 interface 用于定义接口 struct 用于定义抽象数据类型 break 、 case 、 continue 、 for 、 fallthrough 、 else 、 if 、 switch 、 goto 、 default 个类型,也可以改成如下这样的定义,然后返回的时候不用带上变量名,因为直接在函数里面初始化 了。但如果函数是导出的(首字母大写),官方建议:最好命名返回值,因为不命名返回值,虽然使得代码 更加简洁了,但是会造成生成的文档可读性差。 变参 Go函数支持变参。接受变参的函数是有着不定数量的参数的。为了做到这点,首先需要定义函数使其接 受变参: arg ...int 告诉Go这个函数接受不定数量的参数。注意,这些参数的类型全部是 } return true } func isEven(integer int) bool { if integer%2 == 0 { 函数当做值和类型在写一些通用接口的时候非常有用,通过上面例子看到 testInt 这个类型是一个函数 类型,然后两个 filter 函数的参数和返回值与 testInt 类型是一样的,但是可以实现很多种的逻辑, 这样使得程序变得非常的灵活。0 码力 | 47 页 | 1020.34 KB | 1 年前3 Go基础语法宝典用于分包和导入 func 用于定义函数和方法 return 用于从函数返回 defer 用于类似析构函数 go 用于并发 select 用于选择不同类型的通讯 interface 用于定义接口 struct 用于定义抽象数据类型 break 、 case 、 continue 、 for 、 fallthrough 、 else 、 if 、 switch 、 goto 、 default 个类型,也可以改成如下这样的定义,然后返回的时候不用带上变量名,因为直接在函数里面初始化 了。但如果函数是导出的(首字母大写),官方建议:最好命名返回值,因为不命名返回值,虽然使得代码 更加简洁了,但是会造成生成的文档可读性差。 变参 Go函数支持变参。接受变参的函数是有着不定数量的参数的。为了做到这点,首先需要定义函数使其接 受变参: arg ...int 告诉Go这个函数接受不定数量的参数。注意,这些参数的类型全部是 } return true } func isEven(integer int) bool { if integer%2 == 0 { 函数当做值和类型在写一些通用接口的时候非常有用,通过上面例子看到 testInt 这个类型是一个函数 类型,然后两个 filter 函数的参数和返回值与 testInt 类型是一样的,但是可以实现很多种的逻辑, 这样使得程序变得非常的灵活。0 码力 | 47 页 | 1020.34 KB | 1 年前3
 Go在工程实践的错误处理Golang在工程实践中的错误处理 彭友顺 石墨文档 产研负责人 目 录 为什么我们处理错误会这么慢 01 如何完善错误信息 02 优雅处理错误信息 03 分布式错误处理 04 错误信息手册的必要性 05 为什么我们处理错误 会这么慢 第一部分 错误信息不够完善 why 原因 出现 错误 定位 慢 恢复 慢 效率低 为什么我们处理错误会这么慢 错误处理不够优雅 为什么定位慢?-- 分布式错误 TraceId 分布式信息 错误尽早失败 串联信息 方式一,仍然启动b服务 • b服务核心错误信息会藏在了某些日志,如下图所示 • 引入流量后,a服务中接口因为调用b服务报错,但a服务日志里不是根因 • 这种错误被隐藏,我们排查的时候需要很久 • 影响线上功能 为什么定位慢?-- 分布式错误 TraceId 分布式信息 错误尽早失败 串联信息 自动化 经验 识别 花很多时间,去排查线上问题,这是一个认知问题 为什么恢复慢?-- 错误手册 自动化 经验 识别 1. 将认知总结为文档 2. 故障演练 为什么恢复慢?-- 错误手册 自动化 经验 识别 • 自己写文档,代码和文档不一致 • 有错误码找不到代码对应地方 • 有错误码不知道是哪个版本的代码 • 错误码在代码里还有没有使用,错误码越变越多, • 错误码腐化,没用的错误码应该随版本下线0 码力 | 30 页 | 3.11 MB | 1 年前3 Go在工程实践的错误处理Golang在工程实践中的错误处理 彭友顺 石墨文档 产研负责人 目 录 为什么我们处理错误会这么慢 01 如何完善错误信息 02 优雅处理错误信息 03 分布式错误处理 04 错误信息手册的必要性 05 为什么我们处理错误 会这么慢 第一部分 错误信息不够完善 why 原因 出现 错误 定位 慢 恢复 慢 效率低 为什么我们处理错误会这么慢 错误处理不够优雅 为什么定位慢?-- 分布式错误 TraceId 分布式信息 错误尽早失败 串联信息 方式一,仍然启动b服务 • b服务核心错误信息会藏在了某些日志,如下图所示 • 引入流量后,a服务中接口因为调用b服务报错,但a服务日志里不是根因 • 这种错误被隐藏,我们排查的时候需要很久 • 影响线上功能 为什么定位慢?-- 分布式错误 TraceId 分布式信息 错误尽早失败 串联信息 自动化 经验 识别 花很多时间,去排查线上问题,这是一个认知问题 为什么恢复慢?-- 错误手册 自动化 经验 识别 1. 将认知总结为文档 2. 故障演练 为什么恢复慢?-- 错误手册 自动化 经验 识别 • 自己写文档,代码和文档不一致 • 有错误码找不到代码对应地方 • 有错误码不知道是哪个版本的代码 • 错误码在代码里还有没有使用,错误码越变越多, • 错误码腐化,没用的错误码应该随版本下线0 码力 | 30 页 | 3.11 MB | 1 年前3
共 39 条
- 1
- 2
- 3
- 4














 
 