暂时未有相关云产品技术能力~
本文将探讨几个热门的 go 日志库如 logrus、zap 和官网的 slog,我将分析这些库的的关键设计元素,探讨它们是如何支持日志轮转与切割功能的配置。
本文全面介绍了 Go slices 库的所有函数,并着重指出了使用某些函数时的注意事项,通过阅读本文,相信你将能够熟练掌握如何使用 Go Slices 库。
本文对 go 语言里的 slog 包进行了详细介绍,包括基本的使用、Logger 实例的创建和高效输出日志以及自定义日志信息等内容。
在本文中,我们详细探讨了 Go Wire 工具的基本用法和高级特性。它是一个专为依赖注入设计的代码生成工具,它不仅提供了基础的依赖解析和代码生成功能,还支持多种高级用法,如接口绑定和构造结构体。
本文将会对 Go Gin 框架进行简单介绍,括它的一些优势和特点,然后通过一个入门示例,演示了如何安装和使用 Gin 启动一个 WEB 服务器并注册路由。
本文对 Go 工具库 maps 进行详细介绍,包括其提供的函数 Clone、Copy、DeleteFunc、Equal 和 EqualFunc,并强调了使用这些函数时需要注意的地方。
Go 1.21 版本已经正式发布,它带来了许多新特性和改进。其中引入了的三个新内置函数:max、min 和 clear,接下来的内容将详细介绍这些函数的用途和特点。
本文对 Go 项目分层下的最佳 `error` 处理方式进行介绍,并通过使用 github.com/pkg/errors 库中的一些实用函数来提供实现示例。
本文对 Go 函数选项模式(Functional Options Pattern)进行了详细介绍,并通过封装一个消息结构体的例子,展示了如何使用函数选项模式进行代码实现。
本文将会对 Go 语言中的空结构体进行介绍,包括其概念、定义方式、特点、零内存原理和使用场景。
本文详细介绍了 Go 语言中的 Context 上下文,包括核心方法、创建方式以及应用场景等方面的内容。
本文简单介绍了 Go 语言中的方法接收器,重点讲解了值接收器和指针接收器。通过实际示例展示了它们的用法,并对比了它们的差异性。最后,给出了如何根据实际情况正确选择接收器的建议。 总之,在选择接收器时,我们应考虑接收器类型的特性及使用场景,根据实际需求做出选择。若 无法确定 究竟使用哪种接收器,建议优先考虑 指针接收器。
在日常开发中,枚举类型是很常用的,虽然 Go 语言中没有内置枚举类型,但也不妨碍我们自己实现一个类似的 “枚举类型”。
我是陈明勇,本文将详细介绍 Go 语言中的 sync.Once,包括它的基本定义、使用场景和应用实例以及源码分析等。在实际开发中,sync.Once 经常被用于实现单例模式和延迟初始化操作。
RWMutex 是 Go 中的一种读写锁实现,它通过读锁允许多个 goroutine 同时执行读操作,当有写操作请求时,必须等待所有读操作执行结束后才能执行写操作。 RWMutex 的设计采用了 Write-preferring 方案,即如果有写操作在等待执行,新来的读操作将会被阻塞,以避免写操作的饥饿问题。 根据 RWMutex 的特性,它适用于 读多写少的高并发场景,可以实现并发安全的读操作,从而减少在锁竞争中的等待时间。 虽然它能够给程序带来了性能的提升,然而,如果使用不当,就可能会导致 panic 或死锁等问题。因此,在使用 RWMutex 时需要特别小心,并避免错误的用法。
本文主要介绍了 Go 语言中互斥锁 Mutex 的概念、对应的字段和方法、基本使用和易错场景,最后基于 Mutex 实现一个简单的线程安全的缓存。
本文主要介绍了 `Go` 语言中的 `select` 语句。先是介绍语法,然后根据示例介绍了基本用法,接着介绍与channel结合使用的场景,最后总结使用的注意事项。
哈喽大家好,我是陈明勇,本文介绍的内容是 Go 并发模块的两个重要角色 → goroutine 与 channel。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!
Go 语言提供了很多方便的数据类型,其中包括 slice。然而,由于 slice 的特殊性质,在使用过程中易犯一些错误,如果不注意,可能导致程序出现意外行为。本文将详细介绍 使用 slice 时易犯的一些错误,帮助读者更好的使用 Go 的 slice,避免犯错误。
本文对线性查找算法和二分查找算法进行了介绍。线性查找算法虽简单,但是查找效率低,时间复杂度为 O(N);而二分查找法效率虽较高,但是所查找的数组必须是有序的,时间复杂度为 O(logn),基于区间特点的不同(左闭右闭、左闭右开),二分查找算法的写法也不同。
本文首先对插入排序进行简单地介绍,通过图片来演示插入排序的过程,然后使用 Go 语言实现插入排序的算法。为减少算法中交换次数的逻辑,对算法进行优化,将交换的逻辑变成把前面的数往后移,最后将待排序的数插入到合适的位置即可。 除了这种优化方式,还有一种改造方式:普通的算法往左查找的方式是线性查找,由于元素是有序的,因此线性查找可以换成二分查找,但是经过二分找到待插入的位置之后,也得移动前面的元素,相比上面的优化方法,还多了 O(logn) 的查找时间复杂度,因此我认为没有必要改造成二分查找。
我是陈明勇,本文分享的知识是 Go 的循环结构。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!
我是陈明勇,本文分享的知识是 Go 标准库 —— strings 常用函数和方法。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!
Go time 包的使用。介绍如何获取当前时间、获取具体时间单位的值、时间格式化和字符串与时间类型相互转换等操作。掌握了这些函数和方法的使用,应对开发中时间操作的场景不成问题。
哈喽大家好,我是陈明勇,本文分享的知识是 Go 文件的读取操作。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!
本文先是对 File.Write、File.WriteString、File.WriteAt 进行介绍,通过例子演示它们的使用方式;然后介绍 File.Seek,说明了它的用法;最后引出 bufio.NewWriter、Writer.WriteString、Writer.Flush,使用它们代替 File 结构体里的写入方法,可以不用频繁操作磁盘,提高写入效率。
本文介绍了 Go 语言中的 “继承”,它是通过组合的思想去模拟实现面向对象中的继承。然后介绍了什么是类型嵌入以及类型嵌入的两种类型,嵌入的类型包含的字段和方法以隐式存在。 “继承”的实现,能够提高代码的复用性,代码的维护性和扩展性也得以提高。
本文介绍了读取 YAML 配置文件的两种方式,第一种是通过 yaml.v3 包,第二种是通过 viper 包。如果是在项目里解析配置文件,推荐使用 viper 包,它支持解析多种格式的配置文件,监听配置文件的更新,修改配置文件等。
本文介绍了如何使用 sort 包里的函数,对基本数据类型的切片进行排序。sort 包还提供了对自定义的集合进行排序,需要实现 Interface 接口,由使用者去自定义排序规则,通过 sort.Sort 函数进行排序。
本文首先介绍了 reflect 包里两个重要的类型 reflect.Type 和 reflect.Value,简单说明了它们的作用;其次介绍了TypeOf(i) 和 ValueOf(i) 两个函数;最后通过三个案例介绍了它们的使用场景。
本文介绍了在 Go 语言里如何进行 HTTP 调用,需要通过 http 包里的 Client 结构体变量,调用其方法 Do 进行 HTTP 调用,在 HTTP 调用前,需要通过 http 包里的 Request 结构体封装请求路径和请求参数。最后通过 GET 请求案例讲述了 query 参数和 header 参数如何设置,以及响应体的获取方法。
本文通过 POST 请求,介绍了如何传递 json 类型和 application/x-www-form-urlencoded 类型的 body 参数。对于 HTTP 中的 query 参数和 body 参数的如何传递,上下两篇文章已经通过例子进行介绍。虽然举的例子是 GET 和 POST 请求,如果想要调用 PUT、DELETE 等请求,只需要在 NewRequestWithContext 函数中,指定第二个参数为 http.MethodPut、http.MethodDelete 等就行。
本文介绍了如何利用 Go 的复合数据类型 Map 的特性对数组或切片进行去重。值得注意的一个地方是,在使用 Map 构建 Set 时,Value 的数据类型指定为 struct{},原因是后面在添加键值对的时候,指定的 Value 为空结构体 strcut{}{},空结构体不占用内存空间。
本文介绍了 Go 语言里,JSON 与结构体之间的转换。在结构体转 JSON 时,我们可以通过给字段打标签,指定转换后的 key 命名,需要注意的是,如果结构体的字段为非导出字段或字段的 JSON 标签值为 -,在转换 JSON 时,将会被忽略。反之 JSON 解析结构体时也是一样的。
本文对指针和结构体进行了介绍,也指出使用指针和结构体时需要注意的一些地方。因为本文是基于了解的层面去写的文章,一些深入的知识并没有提到,然后也没有提到结构体的方法,是因为打算留到后面和函数一起去介绍。
哈喽大家好,我是陈明勇,本文分享的内容是 Go 的复合数据类型(数组、Slice 切片、Map)。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!
一文解决 Go 安装和常用环境变量的配置。本文只介绍 Windows 和 Linux 操作系统下的安装方式。
1、你会选择成为一名独立开发者吗?
如果可以,我想成为一名独立开发者,我相信这也是诸多开发者的想法。
2、要成为一名独立开发者,需要做哪些准备?