写过 Go 代码的人,肯定对下面的代码不陌生: Go 项目中这行代码会大量存在,这里可能隐藏着陷阱。 1. Go 中的 nil Go 中 nil 代表零值,表示什么都没有,其...
写过 Go 代码的人,肯定对下面的代码不陌生: Go 项目中这行代码会大量存在,这里可能隐藏着陷阱。 1. Go 中的 nil Go 中 nil 代表零值,表示什么都没有,其...
以太坊是目前第二大公链,它和比特币不一样,以太坊上的可以实现的功能更多,如果比特币是一个可以进行加减乘除的计算器,那么以太坊就是一台功能完备的计算机。以太坊系统的复杂度超过比...
如果对币圈稍微有些关注的人,这几个月一定被 NFT 刷屏了。面对一张张卖出天价的 NFT,绝大多数人都无法理解,其实对于 NFT,贵的不是那张图,而是大家的共识。 这篇文章暂...
原文地址:https://go.dev/blog/context-and-structs[https://go.dev/blog/context-and-structs] 在...
Go 语言中自带了测试框架,在不引入外部包的情况下,也可以编写完整的测试。这篇文章来看一下Go 提供原生测试能力,及其不足之处,以及补充这些不足的方法。 1. 基本测试框架 ...
感谢支持~
Goroutine 是如何运行的在 Go 语言中,没有线程,只有 goroutine,这也是 Go 语言原生支持高并发的关键。 goroutine 是 Go 语言对协程的实现。goroutine 非常轻量级...
在 Go1.17 中,千呼万唤的泛型终于出来了,但又没有完全出来。在 Go1.17 的发布文档中,并没有提到泛型,但是眼见的网友发现,泛型相关的代码其实已经合并了,只是没有默...
Go 语言中有一个 container 包,如果只是看这个包名,可能很容易让人误解,但这个 container 和 Docker 之类的容器没有关系。 在 containe...
字符串是一个常见的数据类型,在 Go 语言在内的很多语言中,为了安全,都把字符串设计为不可变。每生成一个字符串都是在创建一个新的字符串,而不是在原有字符串的基础上修改。 在 ...
在 Go 中初始化变量的时候,会用到 make 和 new,如果学习过其他的面向对象语言,比如 Java,可能就会对 new 的使用有点迷惑,Go 中的 new 有着完全不同...
在 Go 语言中,有很多流程控制的语句,if、else 等等,这些流程控制的关键字在其他语言中也存在的但 Go 中还有几个特殊的流程控制关键字,defer、panic 和 r...
使用 Go 语言开发微服务的时候,需要追踪每一个请求的访问链路,这块在 Go 中目前没有很好的解决方案。 在 Java 中解决这个问题比较简单,可以使用 MDC,在一个进程内...
Go 为了实现更高的并发,自己实现了用户态的调度器,称之为 GMP 模型,在上一篇文章中,我们已经简单分析了它的实现。由于自己实现了 goroutine 的调度器,这也会让代...
在 Go 语言中,没有线程,只有 goroutine,这也是 Go 语言原生支持高并发的关键。 goroutine 是 Go 语言对协程的实现。goroutine 非常轻量级...
在之前的文章中,我们详细说了 Go 语言中 goroutine + channel 通过通信的方式来共享内存,从而实现并发编程。 但同时 Go 也提供了传统通过共享变量,也就...
Go 中有一个 Context 接口,配合 goroutine 使用,主要是用来协调 goroutine 的执行,但是比较难理解,这篇文章中来详细分析一下。 1. Conte...
在 Go 语言中,创建一个 HTTP 服务很简单,只需要几行代码就可以创建一个可用的 HTTP 服务,这是因为 Go 原生帮我们实现了一个默认的 HTTP 服务,就是 Ser...
Go 语言中的 http 包提供了创建 http 服务或者访问 http 服务所需要的能力,不需要额外的依赖。在这篇文章中,我们会介绍这些功能的使用,以及看一下 http 包...
在前面两篇文章中,已经详细的介绍了 goroutine 和 channel,它们是 Go 并发编程的基础。今天这篇文章会介绍 Go 并发编程中另一个重要的角色——多路复用。 ...
在上一篇文章中,我们介绍了 Go 并发编程的基础—goroutine,同时也介绍 goroutine 的几种使用方式,但没有说明 goroutine 之间是如何通信的。 Go...