Go语言极简教程
文章平均质量分 78
面向加薪学习
这个作者很懒,什么都没留下…
展开
-
20.Go-头等函数
Go 语言拥有,头等函数是指函数可以被当作变量一样使用,即函数可以被当作参数传递给其他函数,可以作为另一个函数的返回值,还可以被赋值给一个变量。原创 2022-09-14 11:38:58 · 210 阅读 · 0 评论 -
19.Go-make和new
内置函数new分配内存。该函数只接受一个参数,该参数是一个任意类型(包括自定义类型),而不是值,返回指向该类型新分配零值的指针。使用new函数首先会分配内存,并设置类型零值,最后返回指向该类型新分配零值的指针。原创 2022-09-14 11:38:02 · 94 阅读 · 0 评论 -
18.Go-错误与异常
使用errors包中的New函数可以创建自定义错误。下面是errors包中New是一个结构体类型,只有一个字符串字段s。它使用了指针接受者,来实现error接口的方法。New函数有一个字符串参数,通过这个参数创建了类型的变量,并返回了它的地址。于是它就创建并返回了一个新的错误。return 0 , errors . New("计算错误, 长度或宽度,不能小于0.") } return a * b , nil } func main() {= nil {计算错误 , 长度或宽度,不能小于 0.原创 2022-09-14 11:37:50 · 177 阅读 · 0 评论 -
17.Go-线程同步
在 Go 语言中,经常会遇到并发的问题,当然我们会优先考虑使用通道,同时 Go 语言也给出了传统的解决方式和来处理竞争条件。原创 2022-09-14 11:37:38 · 203 阅读 · 0 评论 -
16.Go-Select
语句用在多个发送/接收通道操作中进行选择。selectselectselect下面是使用上面的程序创建了 3 个通道,并在执行select语句之前往通道 1 、通道 2 和 通道 3 分别发送数据,在执行select语句时,如果有机会的话会运行所有表达式,只要其中一个通道接收到数据,那么就会执行对应的case代码,然后退出。原创 2022-09-14 11:37:22 · 152 阅读 · 0 评论 -
15.Go-channel 通道
就是一个管道,可以想像成 Go 协程之间通信的管道。它是一种队列式的数据结构,遵循先入先出的规则。原创 2022-09-14 11:37:09 · 166 阅读 · 0 评论 -
14.Go-协程
是与其他函数或方法一起并发运行的工作方式。协程可以看作是轻量级线程。与线程相比,创建一个协程的成本很小。因此在 Go 应用中,常常会看到会有很多协程并发地运行。原创 2022-09-14 11:36:54 · 176 阅读 · 0 评论 -
13.Go-接口
使用type。原创 2022-09-14 11:36:34 · 108 阅读 · 0 评论 -
12.Go-方法
其实就是一个函数,在func这个关键字和方法名中间加入了一个特殊的接收器类型。接收器可以是结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。上面的代码片段创建了一个接收器类型为Type的方法methodName。原创 2022-09-14 11:36:03 · 55 阅读 · 0 评论 -
11.Go-流程控制
所谓流程控制就是指“程序怎么执行”或者说“程序执行的顺序”。程序整体上确实是从上往下执行,但又不单纯是从上往下。原创 2022-09-14 11:35:43 · 123 阅读 · 0 评论 -
10.Go-包
用于组织 Go 源代码,提供了更好的可重用性与可读性。Go 语言有超过 100 个的标准包,可以用命令查看标准包的具体数目,标准库为大多数的程序提供了必要的基础组件。原创 2022-09-13 21:01:02 · 110 阅读 · 0 评论 -
09.Go-函数
是基于功能或逻辑进行封装的可复用的代码结构。将一段功能复杂、很长的一段代码封装成多个代码片段(即函数),有助于提高代码可读性和可维护性。由于 Go 语言是编译型语言,所以函数编写的顺序是无关紧要的。原创 2022-09-13 20:59:19 · 137 阅读 · 0 评论 -
08.Go-结构体
在 Go 中无法在结构体内部定义方法,这一点与 C 语言类似。package main import "fmt" // Lesson 定义一个名为 Lesson 的结构体 type Lesson struct {name , target string spend int } // PrintPersonInfo 定义一个与 Person 的绑定的方法 func(l Lesson) ShowLessonInfo() {原创 2022-09-13 20:58:03 · 370 阅读 · 0 评论 -
07.Go-指针
指针也是一种类型,也可以创建变量,称之为指针变量。指针变量的类型为*Type,该指针指向一个Type类型的变量。指针变量最大的特点就是存储的某个实际变量的内存地址,通过记录某个变量的地址,从而间接的操作该变量。原创 2022-09-13 20:56:20 · 122 阅读 · 0 评论 -
06.Go-容器类型
指针指向第一个 slice 元素对应的底层数组元素的地址,要注意的是 slice 的第一个元素并不一定就是数组的第一个元素。简单的讲,容量就是从创建切片索引开始的底层数组中的元素个数,而长度是切片中的元素个数。切片是对数组的一个连续片段的引用,所以切片是一个引用类型。切片 本身不拥有任何数据,它们只是对现有数组的引用,每个切片值都会将数组作为其底层的数据结构。当新的元素被添加到切片时,如果容量不足,会创建一个新的数组。当数组赋值给一个新的变量时,该变量会得到一个原始数组的一个副本。所有可比较的类型,如。原创 2022-09-13 20:55:05 · 133 阅读 · 0 评论 -
05.Go-基础数据类型
在静态类型语言(C++/Java/Golang 等)中规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。原创 2022-09-13 20:53:51 · 83 阅读 · 0 评论 -
04.Go-变量与常量
iota 在 const 关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。关键字是 Go 语言中预先保留的单词,在程序中有特殊含义,不能用来定义变量或常量。方法三:在初始化的时候,可以省去数据类型,通过值去自动匹配当前变量的数据类型。定义一个常量,使用 const 关键字。iota 是 Go 语言的常量计数器,只能在常量的表达式中使用。声明变量的一般形式是使用 var 关键字。原创 2022-09-13 20:52:46 · 80 阅读 · 0 评论 -
03.Go-第一个Go程序
main 函数只能声明在 main 包中,不能声明在其他包中,并且,一个 main 包中也必须有且仅有一个 main 函数。代码第 4 行导入了 fmt 包,这行代码会告诉 Go 编译器,我们需要用到 fmt 包中的函数或者变量等,fmt 包是 Go 语言标准库为我们提供的,用于格式化输入输出的内容,类似的还有 os 包、io 包等。另外有一点需要注意,导入的包中不能含有代码中没有使用到的包,否则 Go 编译器会报编译错误,例如。来作为结束符,Go 编译器会自动帮我们添加,当然,在这里加上。原创 2022-09-13 20:51:53 · 86 阅读 · 0 评论 -
02.Go-开发环境搭建
工欲善其事,必先利其器”,做好一件事,准备工作非常重要。在开始学习 Go 技术之前,先介绍如何搭建 Go 开发环境是非常重要的一件事。原创 2022-09-13 20:50:36 · 218 阅读 · 0 评论 -
01.Go-开篇综述
Go 语言由谷歌(Google)公司于 2009 年正式对外发布,设计 Go 语言的初衷都是为了满足 Google 公司的需求。主要目标是“兼具 Python 等动态语言的开发速度和 C/C++等编译型语言的性能与安全性”,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、执行性能好”等优势。最主要还是为了并发而生,并发是基于goroutine的,goroutine类似于线程,但并非线程,可以将goroutine理解为一种轻量级线程。Go 语言运行时会参与调度goroutine。原创 2022-09-13 17:01:42 · 89 阅读 · 0 评论