随笔分类 - Go
Golang相关学习
摘要:Go pipeline 是一种很有效的编程模式,学会这种编程方式,会使用程序的性能得到很大的提升,而且会让程序的结构更加合理。 学习博文:https://mp.weixin.qq.com/s/kQLAnh-frOALCDNU924zxQ // stopGenerating 发送终止信号,关闭生产通道
阅读全文
摘要:错误显示 照着李文周老师教学视频在敲项目,敲完点击运行报这样一个错误,显示Windows版本不兼容,顿时吓得不清。 解决办法 错误原因是main文件package包名问题,修改为main即可。
阅读全文
摘要:函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数)(返回值){ 函数体 } 其中: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。 参数:参数由参数变量和参数变量的类型组成,多个参数之间使
阅读全文
摘要:什么是内存对齐 CPU读取内存是一块一块读取的,并不会以一个字节一个字节去读取和写入内存。 块的大小可以为2、4、6、8、16等字节大小,块的大小称为内存访问粒度。 为什么要进行内存对齐 平台(移植性)原因:不是所有的硬件平台都能够访问任意地址上的任意数据。例如:特点的硬件平台只允许在特定地址获取特
阅读全文
摘要:G:表示goroutine,每个goroutine都有自己的栈空间,定时器,初始化的栈空间在2k左右,空间会随需求在增长。 M:抽象化代表内核线程,记录内核线程栈信息,当goroutine调度到线程是,使用该协程自己的栈信息。 P:代表调度器,负责调度协程,维护一个本地协程队列,M从P获得协程并执行
阅读全文
摘要:切片Slice的底层原理 go数组是值类型,赋值和函数传参操作都会复制整个数组数据。 切片是引用传递,不需要额外的内存且比使用数组更有效率。 切片的结构体由三部分组成,array是指向真实数组的指针,len代表当前切片的长度,cap是当前切片的容量。cap总是大于等于len的。指针指向切片元素对应的
阅读全文
摘要:数组 数组的三种声明方式 var arr [3]int var arr2 = [4]int{1,2,3,4} arr3 := [...]int{1,2,3} // 在编译时自动推断长度 数组是内存中一片连续的区域,需要在初始化时被指定长度,数组的大小取决于数组中存放元素的大小。 数组的长度可以通过内
阅读全文
摘要:字符串 字符串一般有两种类型,一种在编译时指定长度,不能修改;一种具有动态长度,可以修改。 go语言中的字符串是不能修改的,只能被访问,不能使用索引对字符串内容进行修改。 字符串的终止方式有两种,一种是c语言中的隐式申明,以字符"\0"作为终止符。一种是go语言中的显示申明。 go语言字符结构体,D
阅读全文
摘要:顺序输出123 // 实现顺序输出123 func TestPrintNum(t *testing.T) { w := sync.WaitGroup{} a := make(chan struct{},1) b := make(chan struct{}) w.Add(2) go func() {
阅读全文
摘要:hchan结构体 通道在运行时是一个特殊的hchan结构体,结构体内容如下: qcount 通道队列中数据个数 dataqsiz 通道队列中的数据大小 buf 存放实际数据的指针 elemsize 通道类型大小 closed 通道是否关闭 elemtype 通道类型 sendx 记录发送者在buf中
阅读全文

浙公网安备 33010602011771号