首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
go基础与核心
青争9527
创建于2023-03-01
订阅专栏
讲解一些go的基础,核心,以及一些实战的东西
等 1 人订阅
共30篇文章
创建于2023-03-01
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
go泛型:了解类型参数
本文章讲解的泛型基于 Go 1.19.1 版本。 例子:返回切片中值最大的元素 以最常见的整型切片为例,实现一个 maxInt 函数: 我们现在给它加一个新需求:能否针对元素为 string 类型的切
go实践04-怎么实现一个TCP服务器?(下)
在上一讲中,我们初步实现了一个基于 TCP 的自定义应用层协议的通信服务端。对于一个常驻内存的服务端而言,更高的性能以及更低的资源消耗,始终是后端开发人员的追求。
go实践03-怎么实现一个TCP服务器?(中)
今天,我们的目标是实现一个基于 TCP 的自定义应用层协议的通信服务端,要完成这一目标,我们需要建立协议的抽象、实现协议的打包与解包、服务端的组装、验证与优化等工作。
go实践02-怎么实现一个TCP服务器?(上)
我们先假设各位小伙伴都没有亲自开发过类似的通信服务器,所以当理解完这个问题后,我们需要识别出解决这一问题可能使用到的技术点。不过这个问题并不复杂,我们可以很容易地识别出其中的技术点。
go实践01-如何实现一个轻量级线程池?
为什么要用到 Goroutine 池? 所以和其他语言不同的是,Go 应用通常可以为每个新建立的连接创建一个对应的新 Goroutine,甚至是为每个传入的请求生成一个 Goroutine 去处理。
go核心07-并发:如何使用共享变量?
Go 也并没有彻底放弃基于共享内存的并发模型,而是在提供 CSP 并发模型原语的同时,还通过标准库的 sync 包,提供了针对传统的、基于共享内存并发模型的低级同步原语
go核心06-并发:小channel中蕴含大智慧
Go 语言的 CSP 模型的实现包含两个主要组成部分:一个是 Goroutine,它是 Go 应用并发设计的基本构建与执行单元;另一个就是 channel,它在并发模型中扮演着重要的角色。channe
go核心05-并发:聊聊Goroutine调度器的原理
Goroutine 调度器 在操作系统层面,线程竞争的“CPU”资源是真实的物理 CPU,但在 Go 程序层面,各个 Goroutine 要竞争的“CPU”资源又是什么呢? Go 程序是用户层程序,它
go核心04-并发:Go的并发方案实现方案是怎样的?
这种将程序分成多个可独立执行的部分的结构化程序的设计方法,就是并发设计。 并行(parallelism),指的就是在同一时刻,有两个或两个以上的任务(这里指进程)的代码在处理器上执行。 并发不是并行,
go核心03-接口:Go中最强大的魔法
一切皆组合 构建 Go 应用程序的静态骨架结构有两种主要的组合方式,如下图所示: 垂直组合 第一种:通过嵌入接口构建接口 第二种:通过嵌入接口构建结构体类型 第三种:通过嵌入结构体类型构建新结构体类型
go核心02-接口:为什么nil接口不等于nil?
接口的静态特性与动态特性 接口的静态特性体现在接口类型变量具有静态类型,比如var err error中变量 err 的静态类型为 error。拥有静态类型,那就意味着编译器会在编译阶段对所有接口类型
go核心01-接口:接口即契约
核心篇主要涵盖接口类型语法与 Go 原生提供的三个并发原语(Goroutine、channel 与 select),之所以将它们放在核心语法的位置,是因为它们不仅代表了 Go 语言在编程语言领域的创新
go基础18-即学即练:跟踪函数调用链,理解代码更直观
除了捕捉 panic、延迟释放资源外,我们日常编码中还有哪些使用 defer 的小技巧呢? 使用 defer 可以跟踪函数的执行过程。 在讲解这段代码的原理之前,我们先看一下这段代码的执行结果,直观感
go基础17-方法:如何用类型嵌入模拟实现“继承”?
什么是类型嵌入 类型嵌入指的就是在一个类型的定义中嵌入了其他类型。Go 语言支持两种类型嵌入,分别是接口类型的类型嵌入和结构体类型的类型嵌入。 接口类型的类型嵌入 这个接口类型 E 的方法集合,包含两
go基础16-方法:方法集合与如何选择receiver类型?
receiver 参数类型对 Go 方法的影响 这个例子中有方法 M1 和 M2。M1 方法是 receiver 参数类型为 T 的一类方法的代表,而 M2 方法则代表了 receiver 参数类型为
go基础15-方法:理解“方法”的本质
Go 程序的执行流本质上就是在函数调用栈中上下流动,从一个函数到另一个函数。 我们将围绕方法的本质、方法 receiver 的类型选择、方法集合,以及如何实现方法的“继承”这几个主题,进行讲解。 认识
go基础14-函数:怎么让函数更简洁健壮?
健壮性的“三不要”原则 原则一:不要相信任何外部输入的参数。 函数的使用者可能是任何人,这些人在使用函数之前可能都没有阅读过任何手册或文档,他们会向函数传入你意想不到的参数。因此,为了保证函数的健壮性
go基础13-函数:怎么结合多返回值进行错误处理?
error 类型与错误值构造 error 接口是 Go 原生内置的类型,它的定义如下: 任何实现了 error 的 Error 方法的类型的实例,都可以作为错误值赋值给 error 接口变量。
go基础12-函数:请叫我“一等公民”
在 Go 语言中,函数是唯一一种基于特定输入,实现特定任务并可返回任务执行结果的代码块(Go 语言中的方法本质上也是函数)
go基础11-控制结构:Go中的switch语句有哪些变化?
如果用 switch 改写上述例子代码,我们可以这样来写: Go 语言中 switch 语句的一般形式: Go 先对 switch expr 表达式进行求值,然后再按 case 语句的出现顺序
下一页