
[译]Golang教程系统
cyberspecter
我只是一张白纸
展开
-
Part 14:Strings
欢迎来到Golang教程系列的第14部分文章目录什么是字符串?访问字符串的单个字节rune字符串上的 for range 循环从 bytes 切片构建字符串从 rune 切片构建字符串字符串的长度字符串是不可变的字符串在Go中值得特别提及,因为与其他语言相比,它们在实现方面有所不同什么是字符串?在 Go 中字符串是一个bytes 切片。字符串可以通过将它们的内容包含在 “” 中被创建,让我...翻译 2019-04-04 08:52:09 · 184 阅读 · 0 评论 -
Part 24 Select
欢迎来到 Golang教程系列 的第24节文章目录什么是 select?示例实际使用 selectdefault case死锁(deadlock)和 default case随机选择疑难杂症 - 空 select什么是 select?select 语句被用于从多个发送/接收通道操作中选择。select 语句是阻塞的,直到一个发送/接收操作就绪。如果多个操作准备就绪,将随机选择其中的一个。语法...翻译 2019-05-16 16:15:56 · 273 阅读 · 0 评论 -
Part25 Mutex
Golang 系列教程 第 25 部分 - Mutex文章目录临界区互斥锁(Mutex)含有竞态条件的程序使用互斥锁解决竞态条件使用通道解决竞态条件Mutex vs Channels在该教程,我们学习互斥锁,也学习如何使用 channels 和 互斥锁解决竞态条件。临界区在学习互斥锁之前,理解并发程序的临界区的概念是很重要的。当程序并发地运行,修改共享资源的部分代码不应该被多个 协程(Go...翻译 2019-05-16 17:30:48 · 254 阅读 · 0 评论 -
Part 26 Go的面向对象 - 结构体代替类
欢迎来到 Golang系列教程文章目录Go是面向对象的吗?结构体代替类New() 函数代替构造函数Go是面向对象的吗?Go不是一个纯粹的面向对象的程序语言。这摘抄自Go的FAQs,回答Go是否是面向对象的语言的答案。是,也不是。尽管 Go 有类型和方法,允许面向对象风格的编程,但没有类型层次结构,Go中 “interface” 的概念提供了一种我们认为易于使用且在某些方面更为通用的不同方...翻译 2019-05-16 18:34:53 · 357 阅读 · 0 评论 -
Part27: Go的面向对象 - 组合代替继承
欢迎继续Golang系列教程第27节文章目录通过嵌入结构体组合嵌入结构体切片Go并不支持继承,但是它支持组合。组合的通用定义是 “放到一起”。组合的一个例子是 汽车,汽车由车轮,引擎和各种其他部件组成。通过嵌入结构体组合在 Go 中,组合可以通过将一个结构体类型嵌入另一个来获得。博客文章是组合的一个完美例子。每个博客文章都有一个标题,内容和作者信息。这可以通过使用组合完美地表示。在文章的...翻译 2019-05-17 10:15:58 · 550 阅读 · 0 评论 -
Part28 Go的面向对象 - 多态
欢迎来到Golang系列教程文章目录使用接口的多态为上面的程序增加一个新的收入流Go中多态性使用 接口实现。正如我们曾讨论的,接口在Go中可以被隐匿实现。如果类型提供了接口中声明的所有方法的定义,我们就说它实现了该接口。我们来看Go如何在接口的帮助下实现多态性的。使用接口的多态任何定义了一个接口中提供的所有方法的类型,我们就说它隐式实现了该接口。一个接口类型的变量可以包含任何实现该接口的...翻译 2019-05-17 11:00:35 · 217 阅读 · 0 评论 -
Part 11 :数组和切片
欢迎来到 Golang 系列教程,在本教程中我们讨论Go的数组和切片文章目录数组声明数组是值类型数组的长度使用 range 迭代数组多维数组Slices创建切片(slice)修改切片切片的长度和容量使用make创建切片附加到切片将 slice 传递给函数多维切片内存优化数组数组是属于相同类型的元素的集合。例如,整型集合 5,8,9,79 形成一个数组,不同类型的混合值,例如同时包含字符串和整...翻译 2019-05-17 14:45:15 · 394 阅读 · 0 评论 -
Part10: Switch语句
该教程是Golang系列教程的第10个文章目录Default 分支case 的多个表达式switch 表达式Fallthroughswitch是一个条件语句,它计算表达式并将其与可能的匹配列表进行比较,并根据匹配执行代码块。它可以被认为是编写多个 if else 语句的惯用方法。例子胜千言。我们来写一个简单的例子,它使用手指数作为输出,并输出手指的名字。例如,1 是拇指, 2 是食指等等。...翻译 2019-05-18 14:19:21 · 292 阅读 · 0 评论 -
Part9:循环
欢迎来到Golang系列教程的第 9 节文章目录for 循环语法示例breakcontinue循环嵌套标签(Labels)更多例子无限循环循环语句被用来重复执行一个代码块。for 是 Go 中唯一可用的循环,Go 没有 while 或 do-while 循环,这些在出现在其他语言中,比如C。for 循环语法for initialisation; condition; post {}...翻译 2019-05-29 18:10:21 · 172 阅读 · 0 评论 -
Part8 if else 语句
这是Golang系列教程 的第8个教程文章目录疑难杂症if 是一个条件语句,if 语句的语法是if condition {}如果 condition 为真,{ 和 } 之间的代码行被执行。和其他 C 之类的语言不一样,{ } 是强制性的,即使在 {} 之间只有一条语句。if 语句也有可选的 else if 和 else 部分if condition { } else if c...翻译 2019-06-19 14:51:46 · 197 阅读 · 0 评论 -
Part23:有缓冲的通道和工作池
目录什么是带缓冲区的通道?例子另一个例子死锁长度 vs 容量WaitGroup工作池实现欢迎来到Golang教程系列的第23节什么是带缓冲区的通道?我们在上一节所讨论的所有通道都是基本的无缓冲区的通道。正如我们在通道中详细讨论的一样,在无缓冲区上发送和接收数据是阻塞的。可以创建一个有缓冲区的通道。向有缓冲区的通道发送数据仅当缓冲区是满的时候才会阻塞。类似地,从有缓冲区通道上读取数据,仅当缓...翻译 2019-05-07 14:51:41 · 315 阅读 · 0 评论 -
Part 22: 通道(channel)
欢迎来到Golang教程系列 的第22节文章目录什么是通道(channel)声明通道(channel)发送和从通道接收发送和接收默认是阻塞的Channel 示例程序通道的另一个例子死锁单向通道关闭通道和循环遍历通道在上一个教程,我们讨论了关于在Go中如何使用协程实现并发。在该教程,我们将讨论关于通道以及Goroutines 如何使用通道实现通信。什么是通道(channel)通道可以被想像为...翻译 2019-04-22 11:23:01 · 11382 阅读 · 0 评论 -
Golang教程系列
Introduction1 - 介绍和安装2 - Hello World变量,类型和常量3 - 变量4 - 类型5 - 常量函数和包6 - 函数7 - 包条件语句和循环8 - if else 语句9 - 循环10 - Switch 语句数组,切片和变参函数11 - 数组和切片12 - 变参函数更多类型13 - Maps14 - Strings指针,结构体和...翻译 2019-04-03 18:19:07 · 409 阅读 · 0 评论 -
Part 18: 接口 - I
欢迎来到Golang系列教程 的第18部分,这是接口教程 2 小部分的第 1 部分。什么是接口?在面向对象世界接口的一般定义是“接口定义一个对象的行为”。它只指定对象应该做什么。获取这个行为(实现细节)的方式是由对象决定。在Go中,接口是一组方法的签名。当类型提供了接口中所有方法的定义时,我们说实现了这个接口。这个面向对象世界很相似。接口指定类型应该有什么方法和类型决定如何实现这些方法。例...翻译 2019-04-10 15:41:42 · 307 阅读 · 0 评论 -
Part 19 接口II
欢迎来到Golang 系列教程的第19部分,这是我们接口教程的第2部分,以免您错过第一部分,你可点击获取第一部分内容。文章目录使用指针接收器 vs 值接收器实现接口实现多个接口嵌入接口接口的空值使用指针接收器 vs 值接收器实现接口所有在第一部分讨论接口例子都是使用值接收器实现。使用指针接收器实现也是可以的。使用指针接收器实现接口有一些细微之处需要注意,我们使用下面的程序来理解它。onte...翻译 2019-04-10 16:37:29 · 186 阅读 · 0 评论 -
Part 20:并发介绍
欢迎来到Golang教程系列 的第20部分Go 是一个并发语言而不是并行语言。讨论在 Go 中如何处理并发之前,我们必须先要理解什么是并发以及它和并行有什么不同。什么是并发?并发是一次处理多个事物的能力。最好是用一个例子来解释。我们考虑下一个人跑步。在他晨跑期间,我们说他的鞋带开发。现在这个人停止了跑步,系紧他的鞋带,然后再次开始跑步。这是一个经典的并发例子。这个人有处理跑步和系鞋带,这就...翻译 2019-04-11 11:34:37 · 226 阅读 · 0 评论 -
Part21: Goroutines
欢迎来到Go教程系列的第 21 教程文章目录什么是协程(Goroutines)?Goroutines 优于线程的优势如何启动一个协程(Goroutine)?启动多个协程在上一教程我们讨论了关于并发以及它和并行的不同,在该教程,我们将讨论关于并发在Go中是如何使用Goroutines实现的。什么是协程(Goroutines)?协程(Goroutines)是与其他函数或方法同时运行的函数或方法...翻译 2019-04-11 16:17:33 · 209 阅读 · 0 评论 -
Part 15:指针
欢迎来到Golang 系列教程的第15部分文章目录什么是指针指明指针指针的零值指针解引用传递指针给函数不要给函数的参数传递数组指针,使用切片替代。Go不支持指针运算什么是指针指针是存储另一个变量的内存地址的变量。在上面的插图中,变量 b 的值是 156 ,在地址是 0x1040a124 的内存中存储。变量 a 存储有 b 的地址。那现在 a 就被称为指向 b 的指针。指明指针T 是指...翻译 2019-04-09 10:05:47 · 205 阅读 · 0 评论 -
Part 16:结构体
欢迎来到Go系列教程的第 16 部分什么是结构体?结构体是用户定义的类型,它代表一个字段的集合。它可以在有意义的地方被使用,将一组数据放到单一个单元中而不是维护每一个独立的类型。例如雇员有一个名字(firstName),姓(lastName),年龄(age)。将这三个属性组合到一个结构体 employee 是有意义的。声明结构体type Employee struct { f...翻译 2019-04-09 11:36:38 · 275 阅读 · 0 评论 -
Part 17: 方法
欢迎来到Golang系列教程的第17部分什么是方法?方法只是一个具有特殊接收器类型的函数,该接收器在 func 关键字和方法名称之间编写。接收器即可以是结构体类型,也可以是非结构体类型。接收器可以在方法内部访问。下面是创建方法的语法func (t Type) methodName(parameter list) {}上面片段创建一个名为 methodName 的方法,它有一个类型为 ...翻译 2019-04-09 15:52:49 · 292 阅读 · 0 评论 -
Part13 Maps
欢迎来到 Golang 教程系列的第13部分文章目录什么是 map?如何创建一个 map?给 map 增加项目访问 map 的元素删除项目map 的长度Maps是引用类型Maps 比较什么是 map?map 是 Go 的内置类型,它将一个值和key关联起来。值可以使用相应的key检索出来。如何创建一个 map?map可以通过将 key 和值的类型传递给 make 函数被创建。make(m...翻译 2019-04-03 18:05:58 · 238 阅读 · 0 评论 -
Part 12 变参函数
欢迎来到 Golang教程系列的第12部分文章目录什么是变参函数?语法示例和理解变参函数如何工作给变参函数传入一个切片疑难杂症什么是变参函数?变参函数是一个可以接受参数数量可变的函数。语法如果一个函数的最后一个参数是以 ...T 为标记,则该函数的最后一个参数可以接受任何数量类型为 T 的参数。请注意,一个函数仅最后一个参数允许参数可变示例和理解变参函数如何工作你是否想过被用来 a...翻译 2019-04-03 15:00:36 · 207 阅读 · 0 评论 -
Part 7 包(package)
Golang系列教程第 7 部分文章目录什么是包和为什么要使用它们main 函数和 main 包创建自定义包导入自定义包可导出名字init 函数使用空白标示符什么是包和为什么要使用它们到目前为止,我们看到的程序都只有一个文件,它有一个 main 函数和一些其他函数。在真实的场景中,这种把所有源代码都放到一个文件中的途径并不适用。这样写程序让代码重用和代码维护变得不可能。这就是包出现的地方。...翻译 2019-06-21 16:02:49 · 272 阅读 · 0 评论