网站首页 返回列表 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。
深入理解 Go map:初始化和访问元素
从本文开始咱们一起探索Gomap里面的奥妙吧,看看它的内在是怎么构成的,又分别有什么值得留意的地方?第一篇将探讨**初始化和访问元素**相关板块,咱们带着疑问去学习,例如:*初始化的时候会马上分配内存吗?*底层数据是如何存储的?*底层是如何使用key去寻找数据的?*底层是用什么方式解决哈希冲突的?*数据类型那么多,底层...
阅读全文
Go语言高阶:调度器系列(1)起源
如果把语言比喻为武侠小说中的武功,如果只是会用,也就是达到四五层,如果用的熟练也就六七层,如果能见招拆招也得八九层,如果你出神入化,立于不败之地十层。如果你想真正掌握一门语言的,怎么也得八层以上,需要你深入了解这门语言方方面面的细节。希望以后对Go语言的掌握能有八九层,怎么能不懂调度器!?Google、百度、微信搜索了...
阅读全文
Go 的并发模式(中)(更新中)
square-gopher.png在go语言中为并发提供了许多工具,如下GoroutineChannelsSelectSyncpackage今天我们不去谈论goroutine,这是go语言的核心,准备拿出单独内容跟大家来分享goroutine,而是重点讨论作为CSP基石的channel,既然讨论channel我们就需要...
阅读全文
为什么遍历 Go map 是无序的?
image有的小伙伴没留意过Gomap输出顺序,以为它是稳定的有序的;有的小伙伴知道是无序的,但却不知道为什么?有的却理解错误?今天我们将通过本文,揭开`forrangemap`的“神秘”面纱,看看它内部实现到底是怎么样的,输出顺序到底是怎么样?原文地址:[为什么遍历Gomap是无序的?](https://links....
阅读全文
Go调度器系列(3)图解调度原理
如果你已经阅读了前2篇文章:和,你对G、P、M肯定已经不再陌生,我们这篇文章就介绍Go调度器的基本原理,本文总结了12个主要的场景,覆盖了以下内容:1.G的创建和分配。2.P的本地队列和全局队列的负载均衡。3.M如何寻找G。4.M如何从G1切换到G2。5.workstealing,M如何去偷G。6.为何需要自旋线程。7...
阅读全文
Go进阶:反射3定律
各位学习Go语言的朋友,周末好,这次跟大家聊一聊Go语言的一个高级话题:反射。这篇文章是从我过去的学习笔记修改来的,内容主要来自GoBlog的一篇文章《Thelawofreflection》。**这篇文章主要介绍反射和接口的关系,解释内在的关系和原理**。反射来自元编程,指通过类型检查变量本身数据结构的方式,只有部分编...
阅读全文
【Golang 基础】Go 语言 面向对象
Go语言的面向对象Go语言的面向对象非常简单,**仅支持封装,不支持继承和多态。继承和多态是在接口中实现的。**因此Go语言中没有`class`,而是通过`struct(结构体)`对相同类型或不同类型的数据进行封装。*通过`typestruct{}`格式定义结构体;__typeUserstruct{Namestring...
阅读全文
【Golang 基础】Go 语言的接口
Go语言中的接口Go语言中的接口就是方法签名的集合,接口只有声明,没有实现,没有数据字段。***只要某个类型拥有了该接口的所有方法,即该类型就算实现了该接口**,无需显式声明实现了哪个接口,这被称为`StructurolTyping`;__packagemainimport"fmt"//定义Usb接口typeUsbin...
阅读全文
简单围观一下有趣的 //go: 指令
image原文地址:[简单围观一下有趣的//go:指令](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FEDDYCJY%2Fblog%2Fblob%2Fmaster%2Fgolang%2F2019-03-31-%25E7%25AE%2580%25E...
阅读全文
Go 的并发模式(上)(更新中)
square-gopher.png并发是一种设计*将您的程序**设计**为独立进程的集合*将这些进程**设计**为并行运行*通过**设计**让您的代码无论是同步还是异步结果并没有差异golang.jpg关注并发的细节*通过独立的任务来组织您的代码*确保没有raceconditions(竞争条件)*确保没有deadloc...
阅读全文
【Golang 基础】Go 语言的控制语句
Go语言的控制语句([示例代码](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FSilenceHVK%2Ffun-golang%2Fblob%2Fmaster%2Fsrc%2Fbasic%2Fcontroller.go))判断语句`if-else`...
阅读全文
深入理解 Go map:赋值和扩容迁移
原文地址:[深入理解Gomap:赋值和扩容迁移](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FEDDYCJY%2Fblog%2Fblob%2Fmaster%2Fgolang%2Fpkg%2F2019-03-24-%25E6%25B7%25B1%2...
阅读全文
【Golang 基础】Go 语言的数组
Go语言中的数组*定义数组的格式:`var[n]`,其中n>=0;__packagebasicimport"fmt"funcDeclaratArray(){//定义指定长度的数组vararr1[5]intfmt.Println(arr1)//[00000]//不设置数组长度arr2:=[...]int{}fmt.Pri...
阅读全文
【Golang 基础】Go 语言的切片
Go语言的切片([示例代码](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FSilenceHVK%2Ffun-golang%2Fblob%2Fmaster%2Fsrc%2Fbasic%2Fslice.go))`Slice`是一个通过指向数组底层,来...
阅读全文
Go调度器系列(2)宏观看调度器
上一篇文章[《Go语言高阶:调度器系列(1)起源》](https://links.jianshu.com/go?to=http%3A%2F%2Flessisbetter.site%2F2019%2F03%2F10%2Fgolang-scheduler-1-history%2F),学goroutine调度器之前的一些背景...
阅读全文