![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
劫系侠
这个作者很懒,什么都没留下…
展开
-
Golang介绍
介绍:Go是Google公司开发的一门开源的静态强类型程序设计语言,使用Go语言能够构建简单,可靠,高效率的软件。优势:1、运行速度快,简单易学。2、跨平台性强,部署简单。3、丰富的标准库,特别是网络库。4、可以直接包含C代码,利用现有的丰富的C库。5、语言层面支持并发,能够轻松的写出高并发的程序。适合做什么:1、网络编程,例如网站开发。2、服务器编程,日志,文件处理。3、区块链开发...原创 2019-07-19 20:56:25 · 1668 阅读 · 0 评论 -
Go语言,锁
Sync互斥量:sync.Mutex读写锁:sync.RWmutex条件变量:sync.cond锁锁的粒度越小越好一个Goroutine访问在访问一个资源时,先将该资源锁住,防止其他Goroutine访问。访问完毕后解锁。其他Goroutine再来加锁访问。//锁是自愿的。// 锁锁定的是加锁和解锁内所有内容互斥锁:建议锁,不具有强制性。保护公共数据。被锁住后,只有成功...原创 2019-07-19 21:11:58 · 921 阅读 · 0 评论 -
Goroutine介绍
Goroutine:在函数调用之前添加go关键字。自动并发。如果主Goroutine先于子Goroutine结束运行。主动释放整个虚拟进程地址空间。****所有子Goroutine被强制结束****进程操作相关函数:Goroutine调度机制:// runtime包Gosched 主动让出当前gGoroutine使用权一次。进入就绪态,提高其他Goroutine获得cpu的概率。...原创 2019-07-19 21:06:42 · 231 阅读 · 0 评论 -
进程相关概念
进程相关概念:并发:依赖计算机软件,伪多任务。宏观并行、围观串行。我有十个橘子,我一个咬一口。并行:依赖计算机硬件,多核。我有十个橘子,我分给其他9个人一个吃一个。程序:硬盘上的文件。进程:运行起来的程序,占用各种系统资源。最小的系统资源分配单位——进程地址空间(0-4G)独立的进程地址空间——安全。线程:最小的执行单位。——cpu时间轮片分配单位进程创建线程...原创 2019-07-19 21:05:50 · 134 阅读 · 0 评论 -
Go语言异常处理,拦截
异常处理error接口:error是一个接口,该接口只声明了一个方法Error(),返回值是string类型,用以描述错误信息。func main() { err := errors.New("这是一个错误") fmt.Printf("%T,%v\n", err, err) // *errors.errorString,这是一个错误 err2 := err.Error() fmt....原创 2019-07-19 21:04:26 · 900 阅读 · 0 评论 -
Go语言面向对象
面向对象方法:方法就是指定接受者的函数匿名字段:如果匿名字段中有重复属性,默认采用就近原则如果需要给匿名字段内(子段的)属性赋值,可以 子类.父类.属性名赋值匿名字段可以多重继承指针字段使用前需要创建空间给匿名字段定义变量名就是实名字段封装:封装就是将经常用的代码,整合成一个函数供程序调用。封装可以增加代码的复用性,减少冗余。func main() { println(...原创 2019-07-19 21:03:43 · 196 阅读 · 0 评论 -
go语言数据类型
数据类型指针:指针是一个用来专门存储内存地址的整型变量。内存地址是内存总某个字节单元的唯一编号,指针是一个实体,有自己的内存空间,空间内存储一个内存地址。* 对指针取值& 对变量取地址数组:数组是一个定长的数据集合。(可以利用interface存放不同类型的值)数组是值类型,元素是值传递。元素类型相同,但长度不同的数组不属于同一类型,不能进行赋值操作。func m...原创 2019-07-19 21:02:44 · 152 阅读 · 0 评论 -
Go语言环境,命令,测试案例
环境工作区:工作区是一个对应于特定工程的目录src 存放源码pkg 代码包bin 可执行文件包:一个代码集合,可以使用包名.函数名的方式调用包中的函数。测试案例:书写格式:文件名:_test.go结尾导包:testing测试函数参数(t *testing.T)测试案例会执行当前包下所有函数,用t.Error来打印错误信息。go test默认不会打印成功信息,我们可以使...原创 2019-07-19 21:01:53 · 324 阅读 · 0 评论 -
Go语言函数,递归,类型匿名函数,闭包,延迟调用,命令行参数,作用域
函数定义格式:无需前置声明,支持多返回值,支持命名返回值,支持匿名函数的闭包,支持变长参数…。func test (x,y int)(a,b int){ return x + y,x * y}递归函数:递归函数就是自己调用自己,相当于是在做循环,递归函数中应该有一个条件判断,条件满足则不再递归。递归函数可以用来做循环var i =0func test() { if...原创 2019-07-19 21:00:32 · 237 阅读 · 0 评论 -
Go语言流程控制
流程控制选择语句:if else if:一般用于范围处理switch:一般用于等值比较fallthrough:执行本case后继续判断下一个caseifif elseif嵌套if-else ifswitch循环语句:forfor range跳转语句:break:结束循环continue:结束本次循环继续下次循环goto:跳转到置顶标记,只能往外跳,并且不能跳转出...原创 2019-07-19 20:59:03 · 170 阅读 · 0 评论 -
Go语言运算符,流程控制
运算符算数运算符:+ - * / % ++ --// Go语言++ --不能放在算式中赋值运算符:= += -= *= /=// =直接复制,其他线用 右值 运算符 左值 进行计算,然后将结果复制给左值关系运算符:== != < > <= >=// 对数据进行判断逻辑运算符:! && ||// 返回bool值其他运算符:&...原创 2019-07-19 20:58:25 · 123 阅读 · 0 评论 -
Go语言变量
变量命名规则:可以包含字幕,数字,下划线。必须是字幕或者下划线开头(下划线不建议)。不能是关键字。首字母大写为公有变量,可以被外包应用,小写为私有变量,只可以在包内使用。变量的声明,赋值:1、var 变量名 类型名 = 变量值2、自动推导类型 变量名 := 变量值匿名变量:Go语言函数支持多个返回值,当某个返回值不需要时,可以用匿名变量下划线_接收。基础数据类型:整型,浮点,布尔...原创 2019-07-19 20:57:30 · 169 阅读 · 0 评论 -
Go语言,channel,定时器,select
ChannelCSP通讯顺序同步机制:当程序获取到cpu轮片后,执行程序,Goroutine进入挂起态时并不会放弃cpu使用权,而是将cpu使用权交给其他Goroutine。CPU内容执行时间轮片速度慢,效率低。而在Goroutine内部交换使用权能极大的提升切换效率。channel管道及特性:1、channel内的数据只能单向流动2、管道中的数据只能读一次,一旦读走就消失,不能重复读...原创 2019-07-19 21:13:06 · 917 阅读 · 0 评论