
Golang
文章平均质量分 73
Marvellous丶
这个作者很懒,什么都没留下…
展开
-
GO 互斥锁(Mutex)原理
文章目录1. 前言2. Mutex数据结构2.1 Mutex结构体2.2 Mutex方法3. 加解锁过程3.1 简单加锁3.2 加锁被阻塞3.3 简单解锁3.4 解锁并唤醒协程4. 自旋过程4.1 自旋条件4.2 自旋的优势4.3 自旋的问题5. Mutex模式5.1 normal模式5.2 starvation模式6. Woken状态7. 为什么重复解锁要panic8. 编程Tips8.1 使用defer避免死锁8.2 加锁和解锁应该成对出现1. 前言互斥锁是并发程序中对共享资源进行访问控制的主要手段转载 2020-12-18 13:22:54 · 23522 阅读 · 3 评论 -
Golang 面向对象(封装、继承、多态)
前言Go语言并不像Java那样有类的概念,以及extends这样的关键字,但是可以用其特有的数据结构来实现类似面向对象的特性。主要有结构体实现封装,组合实现继承,接口实现多态。当然,Go语言还有其特有的类型判断与断言。文章目录前言一、结构体实现封装二、组合实现继承三、接口实现一、结构体实现封装在Go语言中,我们可以对结构体的字段进行封装,并通过结构体中的方法来操作内部的字段。如果结构体中字段名的首字母是小写字母,那么这样的字段是私有的,相当于private字段。外部包裹能直接访问,如果是在名的首字母原创 2020-12-15 17:38:48 · 22187 阅读 · 1 评论 -
Golang 数组(切片)的值传递与引用传递
Go语言中函数的参数都是按值进行传递的,即使参数是指针,也是指针的一个副本。习惯上把指针的函数参数称之为地址传参,即引用传递,而非指针的函数参数称为值传参地址传参在大对象上效率比值传参好,在内部相当于用指针地址赋值,而不用复制整个对象文章目录一、数组的值传递二、数组的引用传递三、切片的引用传递一、数组的值传递Golang数组作为参数传入函数时,进行的是值传递,这里与Java数组的引用传递是不同的,示例如下package mainimport "fmt"func main() { ar.原创 2020-12-13 20:32:52 · 29489 阅读 · 14 评论 -
Golang错误处理机制(error 与 panic)
文章目录一、概述二、error三、panic一、概述Go语言并没有像Java那样的try catch finally 的处理机制,而是提供了其特有的错误处理机制。在Go语言中,错误或异常分为error和panic两种,error一般是程序员可预知的,会进行合适的处理,例如检测输入是否合法等。而panic是程序员无法预知的异常,例如空指针或数组越界等。二、errorGo 提供了两种创建error的方法,分别是:errors.Newfmt.Errorfpackage mainimport (原创 2020-12-08 22:19:55 · 4454 阅读 · 2 评论