GO语言
文章平均质量分 92
fbbqt
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Go语言 依赖管理
在工程代码中,每种语言基本上都有自己的依赖管理工具,比如python的pip、node.js的npm,java的maven,rust的cargo,Go语言也有提供自己的依赖库管理工具。在go1.11之后,Go语言主要使用Go modules对代码依赖进行管理。原创 2025-11-11 16:41:31 · 631 阅读 · 0 评论 -
Go语言 中的堆--heap
在算法题目中,我们经常遇到需要动态维护一个集合的最值(最大或最小值)的场景,例如找出动态数据流中的第 K 大元素、Dijkstra 算法中的节点松弛操作等。这些场景的共同特点是,我们不仅需要找到当前的最值,还需要高效地添加新元素和删除最值。优先队列 (Priority Queue) 是实现这种操作的理想抽象数据结构,而 堆 (heap) 则是实现优先队列最常用、最高效的具体数据结构。Golang 的标准库 container/heap 提供了一套堆操作的算法。原创 2025-09-02 13:28:02 · 613 阅读 · 0 评论 -
Go语言中的一些问题
Go 语言的字符有以下两种:uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。var str = "hello 你好" //思考下 len(str) 的长度是多少?//golang中string底层是通过byte数组实现的,直接求len 实际是在按字节长度计算//所以一个汉字占3个字节算了3个长度。原创 2025-08-07 11:53:00 · 1098 阅读 · 0 评论 -
Go语言 单元测试
单元测试是软件开发中的一种测试方法,旨在验证代码中最小可测试单元(如函数、方法、类)的行为是否符合预期,它是开发流程的重要组成部分。单元测试的目标是发现代码中的缺陷和错误,并确保代码的正确性和稳定性。Go语言中自带有一个轻量级的测试框架testing和自带的go test命令来实现单元测试和性能测试。在包目录内,以_test.go为后缀名的源文件都是go test的一部分,而不是go build的构建部分。原创 2025-08-06 20:04:13 · 1093 阅读 · 0 评论 -
Go语言 string
字符串(string) 作为 go 语言的基本数据类型,在开发中必不可少,可以说是使用最多的一个数据类型了,凡是涉及到文本处理的地方,我们都会用到字符串。在go语言中,字符串其实就是一串由UTF-8编码的字符序列。接下来看一下官方库对。原创 2025-08-05 20:01:45 · 396 阅读 · 0 评论 -
Go语言 反射
反射可以认为是程序在运行时的一种能力,反射可以在程序运行时访问、检测和修改它本身状态,比如在程序运行时可以检查变量的类型和值,调用它们的方法,甚至修改它们的值。使用反射可以增加程序的灵活性,简单来说,反射就是程序在运行时能够检测自身和修改自身的一种能力。原创 2025-08-05 17:17:08 · 215 阅读 · 0 评论 -
Go语言 泛型
函数。原创 2025-08-05 17:12:24 · 897 阅读 · 0 评论 -
Go语言 协程池
Worker:用于执行任务的goroutineTask: 具体的任务Pool: 池子TaskTask有一个函数成员,表示这个task具体的执行逻辑:f func() error // 具体的执行逻辑Pool定义Pool有两个成员,Capacity表示池子里的worker的数量,即工作的goroutine的数量,JobCh表示任务队列用于存放任务,goroutine从这个JobCh获取任务执行任务逻辑:RunningWorkers int64 // 运行着的worker数量。原创 2025-08-05 14:27:37 · 417 阅读 · 0 评论 -
Go语言 定时器
我们常常会有这样的场景:比如到了未来某一时刻,需要某个逻辑或者某个任务执行一次,或者是周期性的的执行多次,有点类似定时任务。这种场景就需要用到定时器,Go语言中也内置了定时器的实现,原创 2025-08-05 10:36:36 · 219 阅读 · 0 评论 -
Go语言Context
是Go语言中引入的一个标准库接口,其定义如下:这个接口定义了四个方法:主要有以下两种方式创建根context: 从源代码分析和并没有太多的区别,都是用于创建根context,根context是一个空的context,不具备任何功能。但是一般情况下,如果当前函数没有上下文作为入参,我们都会使用创建一个根context作为起始的上下文向下传递。原创 2025-08-04 22:50:26 · 198 阅读 · 0 评论 -
Go语言 延 迟 语 句
延迟语句(defer)是Go 语言里一个非常有用的关键字,它能把资源的释放语句与申请语句放到距离相近的位置,从而减少了资源泄漏的情况发生。原创 2025-08-04 00:34:09 · 650 阅读 · 0 评论 -
Map底层结构与原理
在计算机科学里,被称为相关数组、map、符号表或者字典,是由一组对组成的抽象数据结构,并且同一个 key 只会出现一次。有两个关键点:map 是由key-value对组成的;key只会出现一次。简单说就是最基本的增删查改。map 的设计也被称为 “The dictionary problem”,它的任务是设计一种数据结构用来维护一个集合的数据,并且可以同时对集合进行增删查改的操作。。哈希查找表用一个哈希函数将 key 分配到不同的桶(bucket,也就是数组的不同 index)。原创 2025-08-02 10:48:36 · 1001 阅读 · 0 评论 -
数组与切片
注意,底层数组是可以被多个 slice 同时指向的,因此对一个 slice 的元素进行操作是有可能影响到其他 slice 的。slice 的底层数据就是数组,slice 是对数组的封装,它描述一个数组的片段。的索引2(闭区间)到索引6(开区间,元素真正取到索引5),容量到索引7(开区间,真正到索引6),为5。索引2(闭区间)到索引5(开区间,元素真正取到索引4),长度为3,容量默认到数组结尾,为8。另起炉灶,将原来的元素复制新的位置,扩大自己的容量。,将新的容量将扩大为原始容量的2倍,也就是10了。原创 2025-08-03 09:39:51 · 325 阅读 · 0 评论 -
Go语言Channel
channel的特点:不要通过共享内存来通信,而要通过通信来实现内存共享。Go 的并发哲学,它依赖 CSP 模型,基于 channel 实现。原创 2025-08-03 20:01:28 · 845 阅读 · 0 评论 -
GO语言接口
所以,当实现了一个接收者是值类型的方法,就可以自动生成一个接收者是对应指针类型的方法,因为两者都不会影响接收者。但是,当实现了一个接收者是指针类型的方法,如果此时自动生成一个接收者是值类型的方法,原本期望对接收者的改变(通过指针实现),现在无法实现,因为值类型会产生一个拷贝,不会真正影响调用者。当然,上面的说法有一个简单的解释:接收者是指针类型的方法,很可能在方法中会对接收者的属性进行更改操作,从而影响接收者;也就是说,不管方法的接收者是什么类型,该类型的值和指针都可以调用,不必严格符合接收者的类型。原创 2025-08-03 17:22:05 · 620 阅读 · 0 评论 -
Go语言 逃 逸 分 析
一个变量是在堆上分配,还是在栈上分配,是经过编译器的逃逸分析之后得出的“结论”。Go 语言里编译器的逃逸分析:它是编译器执行静态代码分析后,对内存管理进行的优化和简化。在编译原理中,分析指针动态范围的方法被称之为。通俗来讲,当一个对象的指针被多个方法或线程引用时,则称这个指针发生了逃逸。决定一个变量是分配在堆上还是分配在栈上。原创 2025-08-04 15:22:34 · 992 阅读 · 0 评论 -
Go语言 并发安全sync
谈到并发或者并行一个绕不开的话题就是进程和线程,弄清楚进程与线程的本质是并发编程的前提,那么究竟什么是进程,什么是线程呢?原创 2025-08-04 22:00:05 · 917 阅读 · 0 评论 -
Go语言select
select是Go语言层面提供的一种多路复用机制,用于检测当前goroutine连接的多个channel是否有数据准备完毕,可用于读或写。Go语言的select语句,是用来起一个goroutine监听多个Channel的读写事件,提高从多个Channel获取信息的效率,相当于是单线程处理多个IO事件,其思想基本相同。原创 2025-08-04 22:41:06 · 457 阅读 · 0 评论
分享