go
ccChantal
这个作者很懒,什么都没留下…
展开
-
12.并发编程
12.并发编程12.1 并发与并行Erlang 之父 Joe Armstrong曾经以下图解释并发与并行。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IVhclXZ2-1608983109538)(./img/cor.jpg)]并发在图中的解释是两队人排队接咖啡,两队切换。并行是两个咖啡机,两队人同时接咖啡。“Concurrency is about dealing with lots of things at once. Parallelism is abou原创 2020-12-26 19:49:53 · 89 阅读 · 0 评论 -
11.单元测试
11.单元测试本节代码样例见code/utest文件夹在日常开发中,我们通常需要针对现有的功能进行单元测试,以验证开发的正确性。在go标准库中有一个叫做testing的测试框架,可以进行单元测试,命令是go test xxx。测试文件通常是以xx_test.go命名,放在同一包下面。11.1 初探Go单元测试现在假设现在需求是:完成两个复数相加,我们只需要一个函数便可以完成该任务。在开发中,我们需要对该函数进行功能测试,如何快速进行单元测试呢?鼠标放在函数上右键,选择GO:Generat原创 2020-12-25 22:47:34 · 128 阅读 · 0 评论 -
10.反射机制
10.反射机制10.1 反射是什么反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。Go 语言提供了一种机制在运行时更新变量和检查它们的值、调用它们的方法,但是在编译时并不知道这些变量的具体类型,这称为反射机制。10.2 反射的作用1.在编写不定传参类型函数的时候,或传入类型过多时典型应用是对象关系映射type User struct { gorm.Model Name string Age原创 2020-12-24 22:02:14 · 76 阅读 · 0 评论 -
task9:异常处理
9.异常处理9.1 errorGo语言内置了一个简单的错误接口作为一种错误处理机制,接口定义如下:type error interface { Error() string}它包含一个 Error() 方法,返回值为stringGo的error构造有两种方式,分别是第一种:errors.New()err := errors.New("This is an error")if err != nil { fmt.Print(err)}第二种:fmt.Errorf()err :=原创 2020-12-23 22:18:49 · 126 阅读 · 0 评论 -
task8:包管理
8.包管理8.1 Go Modules是什么?Go语言通过包管理来封装模块和复用代码,这里我们只介绍Go Modules管理方法Go Modules于Go语言1.11版本时引入,在1.12版本正式支持,是由Go语言官方提供的包管理解决方案Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性8.2 Go Modules的使用方法8.2.1 环境变量首先需要设置环境变量,可以使用go env命令查看当前配置。$ go原创 2020-12-22 21:01:09 · 57 阅读 · 0 评论 -
task6结构体、方法、接口
7.结构体、方法、接口7.1.结构体Go 语言中没有“类”的概念,也不支持像继承这种面向对象的概念。但是Go 语言的结构体与“类”都是复合结构体,而且Go 语言中结构体的组合方式比面向对象具有更高的扩展性和灵活性。7.1.1 结构体定义结构体一般定义如下:type identifier struct { field1 type1 field2 type2 ...}例如我们想声明一个学生的结构体类型:type Student struct { Name string Age原创 2020-12-21 23:59:47 · 82 阅读 · 0 评论 -
task06函数
6.函数6.1 函数定义在go语言中函数定义格式如下:func functionName([parameter list]) [returnTypes]{ //body}函数由func关键字进行声明。functionName:代表函数名。parameter list:代表参数列表,函数的参数是可选的,可以包含参数也可以不包含参数。returnTypes:返回值类型,返回值是可选的,可以有返回值,也可以没有返回值。body:用于写函数的具体逻辑例1:下面的函数是用于求两个数的原创 2020-12-20 22:27:13 · 61 阅读 · 0 评论 -
task5:数组、切片
5.数组、切片5.1 数组5.1.1 如何定义数组数组是具有相同类型且长度固定的一组连续数据。在go语言中我们可以使用如下几种方式来定义数组。//方式一var arr1 = [5]int{}//方式二var arr2 = [5]int{1,2,3,4,5}//方式三var arr3 = [5]int{3:10}输出以上三个变量的值如下所示:arr1 [0 0 0 0 0]arr2 [1 2 3 4 5]arr3 [0 0 0 10 0]方法一在声明时没有为其指定初值,所以数原创 2020-12-19 22:29:44 · 126 阅读 · 1 评论 -
task04字典、字符串
4.字典、字符串4.1 字典map是一种较为特殊的数据结构,在任何一种编程语言中都可以看见他的身影,它是一种键值对结构,通过给定的key可以快速获得对应的value。4.1.1 如何定义字典var m1 map[string]intm2 := make(map[int]interface{}, 100)m3 := map[string]string{ "name": "james", "age": "35",}在定义字典时不需要为其指定容量,因为map是可以动态增长的,但是在可以预知原创 2020-12-18 22:43:43 · 70 阅读 · 1 评论 -
Day03go语言运算符、控制语句
3.运算符、控制语句3.1 运算符假定 A 值为 10,B 值为 20。3.1.1 算数运算符运算符描述实例+相加A + B 输出结果 30-相减A - B 输出结果 -10*相乘A * B 输出结果 200/相除B / A 输出结果 2%求余B % A 输出结果 0++自增A++ 输出结果 11–自减A-- 输出结果 93.1.2 关系运算符运算符描述==检查两个值是否相等,如果相等原创 2020-12-17 20:28:42 · 80 阅读 · 0 评论 -
task2变量,常量,枚举
2.变量 、常量、枚举2.1 变量变量,计算机语言能存储计算结果或表示值的抽象概念。可以通过变量名访问,变量名由字母、数字、下划线组成,其中首个字符不能为数字。声明变量的一般形式是使用 var 关键字:var identifier typevar identifier1, identifier2 type变量声明方式:指定变量类型,若没有初始化,数值类型(包括complex64/128)默认零值,bool默认false,字符串默认“”,“var a *int、var a []int、var原创 2020-12-16 23:17:44 · 78 阅读 · 1 评论 -
go:task01数据类型、关键字和标识符
1.数据类型、关键字、标识符1.1 数据类型1.1.1 按类别布尔型:只可以是常量 true 或者 false。eg:var b bool = true数字类型:整型和浮点型。位的运算采用补码字符串类型:字符串就是一串固定长度的字符连接起来的字符序列,Go 的字符串是由单个字节连接起来。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本复数:complex128(64 位实数和虚数)和 complex64(32 位实数和虚数),其中 comple原创 2020-12-15 22:20:26 · 89 阅读 · 0 评论 -
Day0:go语言初探&环境安装
1.go语言特性自动垃圾回收更丰富的内置类型函数多返回值错误处理匿名函数和闭包类型和接口并发编程反射语言交互性2.语言结构一个完整的go文件代码应具有以下几部分:包声明引入包函数变量语句 & 表达式注释加粗的为必有项例如:package main//包名import "fmt"//引入包func main() {//函数,这里是主函数 /* Always Hello, World! */ fmt.Println("Hello, W原创 2020-12-13 22:55:50 · 105 阅读 · 0 评论