 Go Web编程1.1. Go安装 1.2. GOPATH 与工作空间 1.3. Go 命令 1.4. Go开发工具 1.5. 小结 2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 2.7. 并发 2.8. 小结 3.Web基础 3.1 web工作方式 3.2 Go搭建一个简单的web服务 3 "" links links 目录 上一章: 你好,Go 下一节: 流程和函数 52 2.3 流程和函数 2.3 流程和函数 这小节我们要介绍Go里面的流程控制以及函数操作 流程控制 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑。流程控 制包含分三大类:条件判断,循环控制和无条件跳转。 if if if 最后的手段来使用,也就是说,你的代码中应当没有,或者很少有panic的东西。这是个强大的工具,请明智地使用 它。那么,我们应该如何使用它呢? Panic 是一个内建函数,可以中断原有的控制流程,进入一个令人恐慌的流程中。当函数F调用panic,函数F的执行被中 断,但是F中的延迟函数会正常执行,然后F返回到调用它的地方。在调用的地方,F的行为就像调用了panic。这一 过程继续向上,直到发生pani0 码力 | 295 页 | 5.91 MB | 1 年前3 Go Web编程1.1. Go安装 1.2. GOPATH 与工作空间 1.3. Go 命令 1.4. Go开发工具 1.5. 小结 2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 2.7. 并发 2.8. 小结 3.Web基础 3.1 web工作方式 3.2 Go搭建一个简单的web服务 3 "" links links 目录 上一章: 你好,Go 下一节: 流程和函数 52 2.3 流程和函数 2.3 流程和函数 这小节我们要介绍Go里面的流程控制以及函数操作 流程控制 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑。流程控 制包含分三大类:条件判断,循环控制和无条件跳转。 if if if 最后的手段来使用,也就是说,你的代码中应当没有,或者很少有panic的东西。这是个强大的工具,请明智地使用 它。那么,我们应该如何使用它呢? Panic 是一个内建函数,可以中断原有的控制流程,进入一个令人恐慌的流程中。当函数F调用panic,函数F的执行被中 断,但是F中的延迟函数会正常执行,然后F返回到调用它的地方。在调用的地方,F的行为就像调用了panic。这一 过程继续向上,直到发生pani0 码力 | 295 页 | 5.91 MB | 1 年前3
 Go 入门指南(The way to Go)下的虚拟机里的 Linux 系统上安装 Go,你可以选择使用虚拟机软件 VMware,下载 VMware player,搜索并下载一个你喜欢的 Linux 发行版镜像,然后安装到虚拟机里,安装 Go 的流程参考第 2.3 节中的内容。 2.5 在 Windows 上安装 Go 2.5 在 Windows 上安装 Go - 33 - 本文档使用 书栈(BookStack.CN) 构建 2.6 安装目录清单 exported function Func1 28. //... 29. } Go 程序的执行(程序启动)顺序如下: 1. 按顺序导入所有被 main 包引用的其它包,然后在每个包中执行如下流程: 2. 如果该包又导入了其它的包,则从第一步开始递归执行,但是每个包只会被导入一次。 3. 然后以相反的顺序在每个包中初始化常量和变量,如果该包含有 init 函数的话,则调用该函数。 4. i<10; i++ { 25. outputWriter.WriteString(outputString) 26. } 27. outputWriter.Flush() 28. } 除了文件句柄,我们还需要 bufio 的 Writer 。我们以只写模式打开文件 output.dat ,如果文件不存在则自 12.2.3 写文件 12.20 码力 | 466 页 | 4.44 MB | 1 年前3 Go 入门指南(The way to Go)下的虚拟机里的 Linux 系统上安装 Go,你可以选择使用虚拟机软件 VMware,下载 VMware player,搜索并下载一个你喜欢的 Linux 发行版镜像,然后安装到虚拟机里,安装 Go 的流程参考第 2.3 节中的内容。 2.5 在 Windows 上安装 Go 2.5 在 Windows 上安装 Go - 33 - 本文档使用 书栈(BookStack.CN) 构建 2.6 安装目录清单 exported function Func1 28. //... 29. } Go 程序的执行(程序启动)顺序如下: 1. 按顺序导入所有被 main 包引用的其它包,然后在每个包中执行如下流程: 2. 如果该包又导入了其它的包,则从第一步开始递归执行,但是每个包只会被导入一次。 3. 然后以相反的顺序在每个包中初始化常量和变量,如果该包含有 init 函数的话,则调用该函数。 4. i<10; i++ { 25. outputWriter.WriteString(outputString) 26. } 27. outputWriter.Flush() 28. } 除了文件句柄,我们还需要 bufio 的 Writer 。我们以只写模式打开文件 output.dat ,如果文件不存在则自 12.2.3 写文件 12.20 码力 | 466 页 | 4.44 MB | 1 年前3
 Go 入门指南(The way to Go)Func1() { // exported function Func1 //... } Go 程序的执行(程序启动)顺序如下: 1. 按顺序导入所有被 main 包引用的其它包,然后在每个包中执行如下流程: 2. 如果该包又导入了其它的包,则从第一步开始递归执行,但是每个包只会被导入一次。 3. 然后以相反的顺序在每个包中初始化常量和变量,如果该包含有 init 函数的话,则调用该函数。 4. for i:=0; i<10; i++ { outputWriter.WriteString(outputString) } outputWriter.Flush() } 除了文件句柄,我们还需要 bufio 的写入器。我们以只读模式打开文件 output.dat ,如果文件不存在 则自动创建: outputFile, outputError := 接着,使用一个 for 循环,将字符串写入缓冲区,写 10 次: outputWriter.WriteString(outputString) 缓冲区的内容紧接着被完全写入文件: outputWriter.Flush() 如果写入的东西很简单,我们可以使用 fmt.Fprintf(outputFile, “Some test data.\n”) 直接将内容写 入文件。 fmt 包里的 F 开头的 Print0 码力 | 380 页 | 2.97 MB | 1 年前3 Go 入门指南(The way to Go)Func1() { // exported function Func1 //... } Go 程序的执行(程序启动)顺序如下: 1. 按顺序导入所有被 main 包引用的其它包,然后在每个包中执行如下流程: 2. 如果该包又导入了其它的包,则从第一步开始递归执行,但是每个包只会被导入一次。 3. 然后以相反的顺序在每个包中初始化常量和变量,如果该包含有 init 函数的话,则调用该函数。 4. for i:=0; i<10; i++ { outputWriter.WriteString(outputString) } outputWriter.Flush() } 除了文件句柄,我们还需要 bufio 的写入器。我们以只读模式打开文件 output.dat ,如果文件不存在 则自动创建: outputFile, outputError := 接着,使用一个 for 循环,将字符串写入缓冲区,写 10 次: outputWriter.WriteString(outputString) 缓冲区的内容紧接着被完全写入文件: outputWriter.Flush() 如果写入的东西很简单,我们可以使用 fmt.Fprintf(outputFile, “Some test data.\n”) 直接将内容写 入文件。 fmt 包里的 F 开头的 Print0 码力 | 380 页 | 2.97 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 此文列出了所有的简单语句类型。 在Go代码中,各种流程控制代码块中的某些部分 必须为简单语句,某些部分必须为表达式。 StatRandomNumbers函数的声明体中使用了两个流程控制代码块。 其中一个是 for循环代码块,它内嵌了另外一个代码块。 另外一个代码块是一个if-else条件 控制代码块。 请阅读基本流程控制语法(第12章)以获取更多关于流程控制代码块 的信息。 更多的特殊的流程控制代码块将在以后的其它文章中介绍。 break、case、continue、default、 else、fallthrough、for、 goto、if、range、 return、select和switch用在流程控制语句中。 详见基本流程控制语法(第12章)。 defer和go也可以看作是流程控制关键字, 但它们有一些特殊的作用。详见 协程和延迟函数调用(第13章)。 这些关键字将在后续文章中得到详细介绍。 标识符 一个标识符是一个以Un0 码力 | 591 页 | 21.40 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 此文列出了所有的简单语句类型。 在Go代码中,各种流程控制代码块中的某些部分 必须为简单语句,某些部分必须为表达式。 StatRandomNumbers函数的声明体中使用了两个流程控制代码块。 其中一个是 for循环代码块,它内嵌了另外一个代码块。 另外一个代码块是一个if-else条件 控制代码块。 请阅读基本流程控制语法(第12章)以获取更多关于流程控制代码块 的信息。 更多的特殊的流程控制代码块将在以后的其它文章中介绍。 break、case、continue、default、 else、fallthrough、for、 goto、if、range、 return、select和switch用在流程控制语句中。 详见基本流程控制语法(第12章)。 defer和go也可以看作是流程控制关键字, 但它们有一些特殊的作用。详见 协程和延迟函数调用(第13章)。 这些关键字将在后续文章中得到详细介绍。 标识符 一个标识符是一个以Un0 码力 | 591 页 | 21.40 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 地,此文列出了所有的简单语句类型。 在Go代码中,各种流程控制代码块中 的某些部分必须为简单语句,某些部分必须为表达式。 StatRandomNumbers函数的声明体中使用了两个流程控制代码块。 其中一个是 for循环代码块,它内嵌了另外一个代码块。 另外一个代码块是一个if-else 条件控制代码块。 请阅读基本流程控制语法(第12章)以获取更多关于流程 控制代码块的信息。 更多的特殊的流程控制代码块将在以后的其它文章中介 break、case、continue、default、 else、fallthrough、for、 goto、 if、range、 return、select和switch用在流程控制语句中。 详见基本 流程控制语法(第12章)。 defer和go也可以看作是流程控制关键字, 但它们有一些特殊的作用。详 见协程和延迟函数调用(第13章)。 这些关键字将在后续文章中得到详细介绍。 标识符 一个标识符是一个以U0 码力 | 821 页 | 956.82 KB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 地,此文列出了所有的简单语句类型。 在Go代码中,各种流程控制代码块中 的某些部分必须为简单语句,某些部分必须为表达式。 StatRandomNumbers函数的声明体中使用了两个流程控制代码块。 其中一个是 for循环代码块,它内嵌了另外一个代码块。 另外一个代码块是一个if-else 条件控制代码块。 请阅读基本流程控制语法(第12章)以获取更多关于流程 控制代码块的信息。 更多的特殊的流程控制代码块将在以后的其它文章中介 break、case、continue、default、 else、fallthrough、for、 goto、 if、range、 return、select和switch用在流程控制语句中。 详见基本 流程控制语法(第12章)。 defer和go也可以看作是流程控制关键字, 但它们有一些特殊的作用。详 见协程和延迟函数调用(第13章)。 这些关键字将在后续文章中得到详细介绍。 标识符 一个标识符是一个以U0 码力 | 821 页 | 956.82 KB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 地,此文列出了所有的简单语句类型。 在Go代码中,各种流程控制代码块中的 某些部分必须为简单语句,某些部分必须为表达式。 StatRandomNumbers函数的声明体中使用了两个流程控制代码块。 其中一个是 for循环代码块,它内嵌了另外一个代码块。 另外一个代码块是一个if-else条 件控制代码块。 请阅读基本流程控制语法(第12章)以获取更多关于流程控制 代码块的信息。 更多的特殊的流程控制代码块将在以后的其它文章中介绍。 break、case、continue、default、 else、fallthrough、for、 goto、 if、range、 return、select和switch用在流程控制语句中。 详见基本流程 控制语法(第12章)。 defer和go也可以看作是流程控制关键字, 但它们有一些特殊的作用。详 见协程和延迟函数调用(第13章)。 这些关键字将在后续文章中得到详细介绍。 标识符 一个标识符是一个以Uni0 码力 | 608 页 | 1.08 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 地,此文列出了所有的简单语句类型。 在Go代码中,各种流程控制代码块中的 某些部分必须为简单语句,某些部分必须为表达式。 StatRandomNumbers函数的声明体中使用了两个流程控制代码块。 其中一个是 for循环代码块,它内嵌了另外一个代码块。 另外一个代码块是一个if-else条 件控制代码块。 请阅读基本流程控制语法(第12章)以获取更多关于流程控制 代码块的信息。 更多的特殊的流程控制代码块将在以后的其它文章中介绍。 break、case、continue、default、 else、fallthrough、for、 goto、 if、range、 return、select和switch用在流程控制语句中。 详见基本流程 控制语法(第12章)。 defer和go也可以看作是流程控制关键字, 但它们有一些特殊的作用。详 见协程和延迟函数调用(第13章)。 这些关键字将在后续文章中得到详细介绍。 标识符 一个标识符是一个以Uni0 码力 | 608 页 | 1.08 MB | 1 年前3
 03. Golang 在隐私计算平台建设中的实践 - 刘敬多节点通过p2p组⽹网,并基于安 全多⽅方计算、联邦学习、可信执 ⾏行行环境按照数据隐私密级进⾏行行价 值共享 • 业务应⽤用层 基于SDK接⼊入上层业务系统 趣链科技版权所有©2016 – 2021 10 隐私计算流程 • 通过区块链进⾏行行数据使⽤用权限 的控制以及隐私计算任务的协 作 • 链下节点间基于隐私计算算 法,使⽤用多⽅方数据进⾏行行密态计 算,利利⽤用密码学算法达到“明 ⽂文数据不不出本地,计算结果定 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 发起⽅方逻辑 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 ⼦子算法参与⽅方逻辑0 码力 | 37 页 | 6.20 MB | 1 年前3 03. Golang 在隐私计算平台建设中的实践 - 刘敬多节点通过p2p组⽹网,并基于安 全多⽅方计算、联邦学习、可信执 ⾏行行环境按照数据隐私密级进⾏行行价 值共享 • 业务应⽤用层 基于SDK接⼊入上层业务系统 趣链科技版权所有©2016 – 2021 10 隐私计算流程 • 通过区块链进⾏行行数据使⽤用权限 的控制以及隐私计算任务的协 作 • 链下节点间基于隐私计算算 法,使⽤用多⽅方数据进⾏行行密态计 算,利利⽤用密码学算法达到“明 ⽂文数据不不出本地,计算结果定 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 发起⽅方逻辑 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 ⼦子算法参与⽅方逻辑0 码力 | 37 页 | 6.20 MB | 1 年前3
 go web 框架 严清Go 原⽣生接⼝口,流程控制? type HandlerFunc func(ResponseWriter, *Request) type Handler interface { ServeHTTP(ResponseWriter, *Request) } ⼏几种 Middleware 形态 Middleware 模式及其控制 Middlewares 的组合:流程之级联控制 app Println("C") ctx.JSON(200, someBody) }) // ACB Gin 的中间件流程控制,koa 的洋葱头级联模型 思考:如何进⾏行行异常和错误控制?⽐比如 Auth 中间件⽤用户身份验证失败 Middleware 模式及其控制 Middlewares 的组合:流程之级联控制 app.Use(func(next echo.HandlerFunc) echo.HandlerFunc JSON(200, someBody) } }) // ACB Echo 的中间件流程控制,通过 next 控制,依然是葱头级联模型 Middleware 模式及其控制 Middlewares 的组合:流程之级联控制 Middleware 模式及其控制 Middlewares 的组合:流程之顺序控制 app.Use(func(ctx *gear.Context) error {0 码力 | 23 页 | 333.12 KB | 1 年前3 go web 框架 严清Go 原⽣生接⼝口,流程控制? type HandlerFunc func(ResponseWriter, *Request) type Handler interface { ServeHTTP(ResponseWriter, *Request) } ⼏几种 Middleware 形态 Middleware 模式及其控制 Middlewares 的组合:流程之级联控制 app Println("C") ctx.JSON(200, someBody) }) // ACB Gin 的中间件流程控制,koa 的洋葱头级联模型 思考:如何进⾏行行异常和错误控制?⽐比如 Auth 中间件⽤用户身份验证失败 Middleware 模式及其控制 Middlewares 的组合:流程之级联控制 app.Use(func(next echo.HandlerFunc) echo.HandlerFunc JSON(200, someBody) } }) // ACB Echo 的中间件流程控制,通过 next 控制,依然是葱头级联模型 Middleware 模式及其控制 Middlewares 的组合:流程之级联控制 Middleware 模式及其控制 Middlewares 的组合:流程之顺序控制 app.Use(func(ctx *gear.Context) error {0 码力 | 23 页 | 333.12 KB | 1 年前3
 Hello 算法 1.1.0 Go版0‑7 评论区示例 0.2.5 算法学习路线 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段。 1. 阶段一:算法入门。我们需要熟悉各种数据结构的特点和用法,学习不同算法的原理、流程、用途和效 率等方面的内容。 2. 阶段二:刷算法题。建议从热门题目开刷,先积累至少 100 道题目,熟悉主流的算法问题。初次刷题 时,“知识遗忘”可能是一个挑战,但请放心,这是很正常的。我们可以按照“艾宾浩斯遗忘曲线”来 角度,我们可以把字典视 为一个已排序的“数组”;从算法的角度,我们可以将上述查字典的一系列操作看作“二分查找”。 例二:整理扑克。我们在打牌时,每局都需要整理手中的扑克牌,使其从小到大排列,实现流程如图 1‑2 所 示。 第 1 章 初识算法 hello‑algo.com 12 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分 n-1, n for i := 1; i <= n; i++ { res += i } return res } 图 2‑1 是该求和函数的流程框图。 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。0 码力 | 383 页 | 18.48 MB | 1 年前3 Hello 算法 1.1.0 Go版0‑7 评论区示例 0.2.5 算法学习路线 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段。 1. 阶段一:算法入门。我们需要熟悉各种数据结构的特点和用法,学习不同算法的原理、流程、用途和效 率等方面的内容。 2. 阶段二:刷算法题。建议从热门题目开刷,先积累至少 100 道题目,熟悉主流的算法问题。初次刷题 时,“知识遗忘”可能是一个挑战,但请放心,这是很正常的。我们可以按照“艾宾浩斯遗忘曲线”来 角度,我们可以把字典视 为一个已排序的“数组”;从算法的角度,我们可以将上述查字典的一系列操作看作“二分查找”。 例二:整理扑克。我们在打牌时,每局都需要整理手中的扑克牌,使其从小到大排列,实现流程如图 1‑2 所 示。 第 1 章 初识算法 hello‑algo.com 12 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分 n-1, n for i := 1; i <= n; i++ { res += i } return res } 图 2‑1 是该求和函数的流程框图。 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。0 码力 | 383 页 | 18.48 MB | 1 年前3
 Hello 算法 1.0.0 Golang版0‑7 评论区示例 0.2.5 算法学习路线 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段。 1. 阶段一:算法入门。我们需要熟悉各种数据结构的特点和用法,学习不同算法的原理、流程、用途和效 率等方面的内容。 2. 阶段二:刷算法题。建议从热门题目开刷,如“剑指 Offer”和“LeetCode Hot 100”,先积累至少 100 道题目,熟悉主流的算法问题。初次刷题 角度,我们可以把字典视 为一个已排序的“数组”;从算法的角度,我们可以将上述查字典的一系列操作看作“二分查找”。 例二:整理扑克。我们在打牌时,每局都需要整理手中的扑克牌,使其从小到大排列,实现流程如图 1‑2 所 示。 第 1 章 初识算法 hello‑algo.com 12 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分 1; i <= n; i++ { res += i } return res } 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 是该求和函数的流程框图。 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环0 码力 | 382 页 | 17.60 MB | 1 年前3 Hello 算法 1.0.0 Golang版0‑7 评论区示例 0.2.5 算法学习路线 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段。 1. 阶段一:算法入门。我们需要熟悉各种数据结构的特点和用法,学习不同算法的原理、流程、用途和效 率等方面的内容。 2. 阶段二:刷算法题。建议从热门题目开刷,如“剑指 Offer”和“LeetCode Hot 100”,先积累至少 100 道题目,熟悉主流的算法问题。初次刷题 角度,我们可以把字典视 为一个已排序的“数组”;从算法的角度,我们可以将上述查字典的一系列操作看作“二分查找”。 例二:整理扑克。我们在打牌时,每局都需要整理手中的扑克牌,使其从小到大排列,实现流程如图 1‑2 所 示。 第 1 章 初识算法 hello‑algo.com 12 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分 1; i <= n; i++ { res += i } return res } 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 是该求和函数的流程框图。 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环0 码力 | 382 页 | 17.60 MB | 1 年前3
共 45 条
- 1
- 2
- 3
- 4
- 5














