![](https://img-blog.csdnimg.cn/direct/a90bd597858542689557e61b9e7f3d46.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
golang底层原理
文章平均质量分 95
本章节主要讲解golang的底层原理的实现
Go 的学习之路
大四学习小子,喜欢golang开发,关注我和我一起进步吧!
展开
-
Golang chan 实现原理
源码位于runtime/chan.go下,有兴趣的可以看看源码实现,本块会分为五部分讲解,channel结构,创建channel,发送数据,接受数据,关闭channel。而通过通信就能解决以上问题,channel是一种类似于FIFO队列的数据结构,chan的每次发送和他能保证数据在发送和接受时是按照顺序传输的,channel 中有一个接受阻塞队列,一个是发送阻塞队列,当向一个已经满的channel发送数据会被阻塞,此时就会把发送的。当我们通过make创建一个chan的时候,会调用makechan函数。原创 2024-04-27 20:22:19 · 1104 阅读 · 6 评论 -
Go interface详解
Interface 使用场景依赖注入是一种设计模式,它可以减少类之间的耦合,提高代码的可维护性和可测试性。依赖注入的基本思想是,不让类自己创建它所依赖的对象,而是通过外部的方式(如构造函数、参数、属性等)将依赖的对象传递(或注入)给类。这样,类就不需要知道依赖对象的具体实现,只需要调用它们的接口方法。依赖注入有以下好处:原创 2023-12-23 22:56:04 · 1755 阅读 · 0 评论 -
Golang context 万字解析实现原理
如果 parent 没有实现afterFuncer接口,则启动一个协程,通过多路复用的方式监控 parent 状态,如果终止,则同时终止子 context,并把parent 的 err传递给子context,如果孩子终止则直接跳过,因为不影响parent。如果parent 是 cancelCtx 的类型,则加锁,并将子 context 添加到 parent 的 children map 当中,假如以后父context取消,可以直接用children map 取消所有的子context。原创 2024-02-05 12:12:46 · 1412 阅读 · 2 评论 -
深入了解Golang atomic原子操作
并发是指在同一时间间隔内,多个任务(线程、进程或活动)同时存在和执行的状态,在同一个时间点多个任务同时进行,当一个 CPU 在访问数据时,其他 CPU 可能同时在访问同一块数据或者相关的数据,如果其中一个 CPU 修改了数据并且写回了内存,其他 CPU 的缓存并不会立即更新,而是需要等待一定的时间或者触发特定的机制来使得缓存中的数据失效。这就可能导致其他 CPU 继续使用旧的数据,从而引发并发性问题,如数据不一致、程序错误等。原创 2024-02-20 17:23:29 · 1648 阅读 · 1 评论