首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
go
订阅
flix
更多收藏集
微信扫码分享
微信
新浪微博
QQ
11篇文章 · 0订阅
深入理解Go-sync.Map原理剖析
上面一段是官方对sync.Map 的描述,从描述中看,sync.Map 跟map 很像,sync.Map 的底层实现也是依靠了map,但是sync.Map 相对于 map 来说,是并发安全的。 1. 结构概览 1.1. sync.Map 1.2. readOnly 1.3. e…
Golang 如何正确使用 Context
at Golang UK Conf. 2017 如果进一步考虑。 如上图这样的 RPC 调用,开始调用 RPC 1 后,里面分别调用了 RPC 2, RPC 3, RPC 4,等所有 RPC 用成功后,返回结果。 RPC 2 失败后,如果没有 Context 的存在,那么我们可…
Golang 并发编程与定时器
对于任何一个正在运行的应用,如何获取准确的绝对时间都非常重要,但是在一个分布式系统中我们很难保证各个节点上绝对时间的一致性,哪怕通过 NTP 这种标准的对时协议也只能把时间的误差控制在毫秒级,所以相对时间在一个分布式系统中显得更为重要,我们在这一节中就会介绍 Go 语言中的定时…
如何写出优雅的 Golang 代码
写在前面代码规范辅助工具自动化最佳实践目录结构模块拆分显式与隐式面向接口小结单元测试可测试组织方式Mock方法断言小结总结ReferenceGo语言是一门简单、易学的编程语言,对于有编程背景的工程师来
深入理解Golang之channel
Golang在并发编程上有两大利器,分别是channel和goroutine,这篇文章我们先聊聊channel。熟悉Golang的人都知道一句名言:“使用通信来共享内存,而不是通过共享内存来通信”。这句话有两层意思,Go语言确实在sync包中提供了传统的锁机制,但更推荐使用ch…
Golang AST语法树使用教程及示例
许多自动化代码生成工具都离不开语法树分析,例如goimport,gomock,wire等项目都离不开语法树分析。基于语法树分析,可以实现许多有趣实用的工具。本篇将结合示例,展示如何基于ast标准包操作语法树。 demo.go文件已尽量简化,但其语法树的输出内容依旧十分庞大。我们…
Go语言学习——channel的死锁其实没那么复杂
协程(goroutine)算是Go的一大新特性,也正是这个大杀器让Go为很多路人驻足欣赏,让信徒们为之欢呼津津乐道。 协程的使用也很简单,在Go中使用关键字“go“后面跟上要执行的函数即表示新启动一个协程中执行功能代码。 可以简单理解为,Go中的协程就是一种更轻、支持更高并发的…
图解Golang的内存分配
以上是程序内存的逻辑分类情况。 Go是内置运行时的编程语言(runtime),像这种内置运行时的编程语言通常会抛弃传统的内存分配方式,改为自己管理。这样可以完成类似预分配、内存池等操作,以避开系统调用带来的性能问题,防止每次分配内存都需要系统调用。 内存分配算法采用Google…
[译] part 18: golang 接口 1
面向对象世界中接口的定义是“接口定义对象的行为”。它只指定对象应该做什么。实现此行为(实现细节)的方法取决于对象。 在 Go 的世界里,接口是一组方法签名。当一个类型为接口中的所有方法提供定义时,就说它实现了该接口。它与 OOP 世界非常相似。接口指定类型应具有的方法,类型决定…