-
在Go语言中,自定义类型和类型断言常见的错误及规避方法如下:1.自定义类型:定义新类型时,需注意类型转换,避免直接比较不同类型的值。2.类型断言:使用类型断言时,必须检查ok值,避免运行时panic,并尽量使用类型切换提高代码效率和可读性。
-
说明:本文中的示例,均是基于Go1.17 64位机器
RWMutex 总览
RWMutex 是一个读/写互斥锁,在某一时刻只能由任意数量的 reader 持有 或者 一个 writer 持有。也就是说,要么放行任意
-
Vigenere 加密算法
该密码由意大利密码学家 Giovan Battista Bellaso 于 1553 年发明,但几个世纪以来一直归功于 16 世纪的法国密码学家 Blaise de Vigenère,他在 1586 年设计了类似的密码。
Vigenere Cipher
-
我们为什么需要了解RESP协议?
本篇文章目的为探究RESP协议,而非编写读写中间件,这点要清楚。
关于这个问题,我想通过一个实例来解释,我们编写Redis中间件,为什么需要了解RESP协议。
以
-
作为一名程序员,学就对了。
之前用 Python 写过一些 gRPC 服务,现在准备用 Go 来感受一下原汁原味的 gRPC 程序开发。
本文的特点是直接用代码说话,通过开箱即用的完整代码,来介绍 gRPC 的各
-
获取当前时间及其秒、毫秒、纳秒数
now := time.Now() //获取当前时间
==>2019-08-21 11:30:51.2470317 +0800 CST m=+0.004501101
fmt.Printf("时间戳(秒):%v;\n", time.Now().Unix()) //10位
fmt.Printf("时间戳(纳秒)
-
在看本篇文章前我们需要了解阻塞的概念
在执行过程中暂停,以等待某个条件的触发 ,我们就称之为阻塞
在Go中我们make一个channel有两种方式,分别是有缓冲的和没缓冲的
缓冲channel 即 buffer cha
-
之前在知乎看到一个问题:为什么 Golang 没有像 Python 中 in 一样的功能?于是,搜了下这个问题,发现还是有不少人有这样的疑问。
今天来谈谈这个话题。
in 是一个很常用的功能,有些语言中
-
Go语言可以将类型的方法与普通函数视为一个概念,从而简化方法和函数混合作为回调类型时的复杂性。这个特性和 C# 中的代理(delegate)类似,调用者无须关心谁来支持调用,系统会自动处
-
嵌入结构体内部可能拥有相同的成员名,成员重名时会发生什么?下面通过例子来讲解。package mainimport ( "fmt")type A struct { a int}type B struct { a int}type C struct { A B}func main() { c :=
-
概述
select是go提供的一种跟并发相关的语法,非常有用。本文将介绍 Go 语言中的 select 的实现原理,包括 select 的结构和常见问题、编译期间的多种优化以及运行时的执行过程。
-
Go 语言的 sync 包提供了一系列同步原语,其中 sync.Once 就是其中之一。sync.Once 的作用是保证某个函数只会被执行一次,即使在多个 goroutine 中也不会重复执行。sync.Once 在实际开发中非常常用,例
-
一、函数签名函数是程序设计中封装代码的一种重要方式,函数提供了一种将一段代码块封装起来并在需要时重用的方式。在Go语言中,函数是第一类值,它们可以像其他类型的值一样传递给函数或从函数中返回。函数签名描述了函数的输入和输出,包括参数数量、类型和返回值类型。Go语言中函数签名的语法如下所示:funcfunctionName(parameter1type1,
-
Go语言是一种高性能、并发性强的编程语言,深受开发者的喜爱。其中,对象管理和内存回收是Go语言开发者必须熟悉的关键概念。在Go语言中,对象管理表现为对象的创建、初始化、引用计数以及销毁等一系列操作。这些操作对于程序的正确运行和性能的提升至关重要。在内存回收方面,Go语言通过自动垃圾回收机制有效地管理内存,避免了手动释放内存的繁琐过程,减轻了开发者的负担。一、
-
随着互联网技术的发展,缓存技术在网站开发中扮演着越来越重要的角色。缓存的作用是,将数据预先保存在内存中,以便下一次请求时可以更快地获取数据。但是,在缓存中并不是所有的数据都能被缓存,有一些数据比如一些非法请求,是不能被缓存的。当这些非法请求频繁地访问网站时,就可能会引起缓存穿透的问题,从而对网站的性能和安全性产生影响。本文将着重探讨在Go语言中,如何应对缓存