
Golang
YPLee_8
永远行走在路上……
展开
-
Golang Slice源码解析
切片和数组的区别点就是切片是引用类型可以动态扩容,数组是值类型不可扩容。由切片的结构可知切片底层实现是在在数组之上包装了一层,由一个指向数组的指针,以及容量和长度,这个指针对应是否变化切片的使用常规是不关心的。原创 2024-05-17 11:28:17 · 268 阅读 · 1 评论 -
Golang heap堆源码解析
Golang 的堆是用二叉树来实现,heap包实现了保证根节点为最大/最小值即大根堆/小根堆,而后续其他的节点顺序不能保证,要想严格排序,需要自行实现额外逻辑。原创 2024-04-16 14:09:46 · 413 阅读 · 0 评论 -
rust和golang的对比
* Golang 的特色是简单,原生支持并发,编译速度和执行速度有所均衡* Rust 特色专注内存的安全语言,追求极致的执行速度,编译较慢* 都是编译型语言* 都是强类型语言* 性能都比较出色原创 2023-11-29 16:32:18 · 1251 阅读 · 0 评论 -
Golang 中的静态类型和动态类型
静态类型(static type):在编码时就能确定的类型,通过变量定义可以确定的类型;动态类型(concrete type):在运行时才能确定具体的数据类型;原创 2023-09-05 17:46:23 · 854 阅读 · 0 评论 -
Golang 中return和defer执行先后顺序
Golang语言中函数的return不是原子操作,而是分为了两步:返回值赋值;真正函数返回原创 2023-09-04 21:01:34 · 937 阅读 · 0 评论 -
golang slice 作为参数值传递情况说明
golang 中引用类型有:slice、map、interface、channelgolang所有类型在函数中都是值传递,这个跟上面golang中有的数据类型为引用类型并不冲突,用下面四个slice实例帮助理解原创 2023-07-28 20:13:39 · 536 阅读 · 0 评论 -
Golang类型定义与类型别名区别
类型别名是go 1.9以后引入的新功能,主要是为了解决代码升级迁移中的兼容问题类型别名只存在与代码中,编译后别名是不存在的, 见实例1代码类型别名不可随意扩充方法,类型定义可以在新的类型上扩充自定义方法,见实例2原创 2023-04-15 13:56:08 · 245 阅读 · 0 评论 -
Golang recover无法捕获踩坑
panic后,程序不会往下继续执行,也不会立即结束而是会调用当前goroutine 的延迟调用函数。就必须加在当前goroutine 的 延迟调用函数中。原创 2023-03-28 20:35:17 · 580 阅读 · 0 评论 -
golang字符串拼接性能测试
golang 字符串拼接性能测试原创 2021-12-22 17:21:43 · 526 阅读 · 0 评论 -
Golang 小知识点集合 -下划线用法
下划线(_) 用法忽略返回值该用方法很常见,不在多说,放一个例子:v, _ := functionName(...)初始化包,但是不使用该用法也很常见,就是导入包进行初始化,不使用其他能力import _ "test/test"接口断言该用法是本次重点介绍学习的,该用法主要是在给变量校验是否实现接口,具体看下面例子:type Book interface { GetName() string}type Maths struct {}func(m Maths)原创 2021-06-16 17:54:57 · 303 阅读 · 0 评论 -
Golang 小知识点集合 -值类型和引用类型
前言:堆栈存储简介栈(stack) : 一种拥有特殊规则的线性表数据结构,只允许线性表的一端放入数据,之后再这一端取出数据,按照后进先出(lifo)的顺序。堆(heap) : 一段非连续的存储空间,堆分配内存和技分配内存相比,堆适合不可预知大小的内存分配 ,但是为此付出的代价是分配速度较慢 ,而且会形成 内 存碎片。定义简介首先不管是值类型还是引用类型的数据都在存储中存在的,值类型和引用类型二者区别主要体现在变量(容器)及变量的赋值。值类型数据:变量直接存储值,赋值重新开辟新空间复制一份数原创 2021-06-16 17:53:18 · 327 阅读 · 0 评论