go
基基肌
彩虹男孩
展开
-
go语言并发编程
并发编程 1 并发与并行 Erlang 之父 Joe Armstrong曾经以下图解释并发与并行。 并发在图中的解释是两队人排队接咖啡,两队切换。 并行是两个咖啡机,两队人同时接咖啡。 “Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once.” — Rob Pike 并发使并行变得容易,并发提供了一种构造解决方案的方法,并行一般伴随这多核。并发一般原创 2020-12-26 20:56:06 · 98 阅读 · 0 评论 -
Go语言 单元测试
单元测试 在日常开发中,我们通常需要针对现有的功能进行单元测试,以验证开发的正确性。 在go标准库中有一个叫做testing的测试框架,可以进行单元测试,命令是go test xxx。 测试文件通常是以xx_test.go命名,放在同一包下面。 1 初探Go单元测试 现在假设现在需求是:完成两个复数相加,我们只需要一个函数便可以完成该任务。 在开发中,我们需要对该函数进行功能测试,如何快速进行单元测试呢? 鼠标放在函数上右键,选择GO:Generate Unit Tests For Function即可生成原创 2020-12-25 11:10:18 · 222 阅读 · 0 评论 -
go语言 反射机制
go语言 反射机制 1 反射是什么 1. 反射定律 反射可以将“接口类型变量”转换为“反射类型对象”。 反射可以将“反射类型对象”转换为“接口类型变量”。 如果要修改“反射类型对象”,其值必须是“可写的”。 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。 Go 语言提供了一种机制在运行时更新变量和检查它们的值、调用它们的方法,但是在编译时并不知道这些变量的具体类型,这称为反射机制。 10.2 反射的作用 1.在编写不定传参类型函数的时候,或传入类原创 2020-12-24 09:43:11 · 99 阅读 · 0 评论 -
go语言 异常处理
异常处理 Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,甚至一个小小的错误都抛出一个异常。在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的情况下,也就是说,遇到真正的异常的情况下(比如除数为0了)。才使用Go中引入的Exception处理:defer, panic, recover。 1 error Go语言内置了一原创 2020-12-23 19:40:51 · 489 阅读 · 0 评论 -
Go语言 包管理
包管理 1 Go Modules是什么? Go语言通过包管理来封装模块和复用代码,这里我们只介绍Go Modules管理方法 Go Modules于Go语言1.11版本时引入,在1.12版本正式支持,是由Go语言官方提供的包管理解决方案 Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性 2 Go Modules的使用方法 2.1 环境变量 首先需要设置环境变量,可以使用go env命令查看当前配置。 $ go env GO1原创 2020-12-22 18:39:31 · 100 阅读 · 0 评论 -
Go语言 结构体、方法、接口
1.结构体 Go 语言中没有“类”的概念,也不支持像继承这种面向对象的概念。但是Go 语言的结构体与“类”都是复合结构体,而且Go 语言中结构体的组合方式比面向对象具有更高的扩展性和灵活性。 1.1 结构体定义 结构体一般定义如下: type identifier struct { field1 type1 field2 type2 ... } 例如我们想声明一个学生的结构体类型: type Student struct { Name string Age int } 结构体中字段的类型原创 2020-12-21 10:59:16 · 113 阅读 · 0 评论 -
GO语言 函数
函数 Golang语言 函数 1 函数定义 在go语言中函数定义格式如下: func functionName([parameter list]) [returnTypes]{ //body } 函数由func关键字进行声明。 functionName:代表函数名。 parameter list:代表参数列表,函数的参数是可选的,可以包含参数也可以不包含参数。 returnTypes:返回值类型,返回值是可选的,可以有返回值,也可以没有返回值。 body:用于写函数的具体逻辑 函数的定义 函数构成原创 2020-12-20 09:16:41 · 283 阅读 · 1 评论 -
go语言 数组、切片
数组、切片 数组的定义 var 数组名 [数组大小]数据类型 var a [5]int 赋初值 a[0] = 1 a[1] = 30 .... 数组在内存布局(重要) 对上的总结: 数组的地址可以通过数组名来获取 &intArr 数组的第一个元素的地址,就是数组的首地址 数组的各个元素的地址间隔是依据数组的类型决定,比如 int64 -> 8 int32->4… 数组的使用 访问数组元素 数组名[下标] 比如:你要使用 a 数组的第三个元素 a[2] 二维数组快速入门 快速入门原创 2020-12-19 09:50:22 · 113 阅读 · 1 评论 -
字典、字符串
字典、字符串 参考文章,请点击此处 1 字典 map是一种较为特殊的数据结构,在任何一种编程语言中都可以看见他的身影,它是一种键值对结构,通过给定的key可以快速获得对应的value。 go 语言中的字典和python 中的字典特性差不多 相同: 键值对, 无序集合, 每个键都是唯一的, 对一个键多次赋值会更新当前键的值; 不同: go语言的字典里面的类型是定好的, 不可变更, python可以随意写类型. map初始化与内存分配 首先,必须给map分配内存空间之后,才可以往map中添加元素: func原创 2020-12-18 09:35:11 · 195 阅读 · 0 评论 -
运算符、控制语句
运算符、控制语句 1 运算符 假定 A 值为 10,B 值为 20。 1.1 算数运算符 1.2 关系运算符 1.3 逻辑运算符 1.4 位运算符,假定 A 为60,B 为13 1.5 赋值运算符 1.6 其他运算符 1.7 优先级 详见:https://blog.csdn.net/qq_34307082/article/details/100155048?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%2525221原创 2020-12-17 20:44:00 · 70 阅读 · 0 评论 -
Task03: 变量、常量、枚举(1天) 组队学习 Go编程语言
变量 、常量、枚举 变量 变量,计算机语言能存储计算结果或表示值的抽象概念。可以通过变量名访问,变量名由字母、数字、下划线组成,其中首个字符不能为数字。 声明变量的一般形式是使用 var 关键字: var identifier type var identifier1, identifier2 type GO语言的变量声明方式与C和C++语言有明显的不同。对于纯粹的变量声明,GO语言引入了关键字var,而类型信息放在变量名之后,示例如下: var v1 int //整型 var v2 stirng /原创 2020-12-16 10:05:03 · 72 阅读 · 0 评论 -
Task02: 数据类型、关键字、标识符(1天)
Task02: 数据类型、关键字、标识符 基础知识 变量声明 变量声明一般使用var 关键字 var a int = 100 //值为100的整型变量a var b bool = true; //值为真的布尔变量 b var c string = "hello word" //值为hello word的字符串c var arr [5]int //声明了长度为5的整型数组 := 声明初始化操作符 需要注意的是 :=操作符只能用于声明局部变量,不能用于声明全局变量,也就是只能用于函数内部使用,不能用户全局。原创 2020-12-14 20:07:22 · 97 阅读 · 0 评论 -
MACOS操作系统下 GO语言环境安装
MACOS操作系统下 GO语言环境安装 第一天 MACOS操作系统下 GO语言环境安装 先在MacOS上安装好VS code 参考地址:https://blog.csdn.net/tang_yu_mac/article/details/104351404?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160794571916780304674385%2522%252C%2522scm%2522%253A%252220140713.130102原创 2020-12-14 19:38:34 · 97 阅读 · 0 评论