首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Go
Onemorelight
创建于2022-08-29
订阅专栏
Go语言原理分析以及开发经验分享
暂无订阅
共36篇文章
创建于2022-08-29
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Golang 协程是什么
Golang 协程是什么 线程 我们都知道,线程是进程中的执行体,拥有一个执行路口,以及从进程虚拟地址空间中分配的栈。包括用户栈和内核栈。 操作系统会记录线程控制信息,而线程获得CPU时间片以后才可以
Golang 标准库之反射
Golang 标准库之反射 变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。 反射介绍 反射是指在程序运行期对程序本身进行访问和修
Golang reflect底层剖析
Golang reflect底层剖析 用到反射的场景不外乎是变量类型不确定,内部结构不明朗的情况,所以反射的作用简单来说就是把类型元数据暴露给用户使用。 我们已经介绍过runtime包中_type、u
Golang 类型断言
Golang 类型断言 我们已经知道接口可以分为空接口与非空接口两类。相对于接口这种“抽象类型”,像int,slice,string,map,struct等类型被称为“具体类型”。 类型断言是Go语言
Golang Interface
Golang Interface 空接口 interface{} 空接口类型可以接收任意类型的数据,它只要记录这个数据在哪儿,是什么类型的就足够了。空接口变量数据结构如下,其中_type指向接口的动态
Golang 类型系统
Golang 类型系统 类型系统 如果我们自定义一个结构体类型T,并给它关联一个方法F1。我们知道变量t的内存布局只包含一个字符串变量,那它和F1之间怎样建立关联? 由于编译阶段,编译器知道每种类型定
Golang method原理浅析
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 method 方法 方法即method,Go语言支持为自定义类型实现方法,method在具体实现上与普通的函数并无不同,只不过会通过运行时栈多传递
Golang panic和recover原理浅析
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 panic和recover 我们已经知道,当前执行的goroutine持有一个defer链表的头指针。其实它也有一个panic链表头指针。 pan
Golang slice传参陷阱
golang slice传参陷阱 先看一道题 如果不清楚slice的扩容和Go语言的传参机制,可能很难想出来一个解释的清的答案,答案选C,最后再解释。 slice的传参 在初学golang的时候,我一
Golang defer原理
Golang defer原理 defer1.12 defer延迟和倒序的机制 延迟 在go语言中,我们可以很方便的用defer关闭一个打开的文件、释放一个Redis连接,或者解锁一个Mutex。而且G
Golang 闭包
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 Golang 闭包 实例引入 先来看一段代码,下面的addr函数的返回值是另一个函数,被返回的这个函数中,又对addr函数中的变量进行了累加,然后
Golang 函数调用栈
golang函数调用栈 如果在一个函数中调用另一个函数,编译器就会对应生成一条call指令,程序执行到这条指令时,就会跳转到被调用函数入口处开始执行,而每个函数的最后都有一条ret指令,负责在函数结束
Golang 内存对齐
Golang 内存对齐 什么是内存对齐 为保证程序顺利高效的运行,编译器会把各种类型的数据安排到合适的地址,并占用合适的长度,这就是内存对齐。 每种类型的对齐值就是它的对齐边界,内存对齐要求数据存储地
Golang slice原理浅析
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 Golang slice原理浅析 slice内存模型 我的go源码版本是:go1.17.2 slice的源码在Go_SDK\go1.17.2\sr
Golang map实现原理浅析
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 Golang map实现原理浅析 map的内存模型 我的go源码版本是:go1.17.2 map的源码在Go_SDK\go1.17.2\src\r
Golang逃逸分析
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 golang逃逸分析 1.栈和堆 在golang中,应用程序的内存载体,可以简单的分为栈和堆。 栈的内存是由编译器自动进行分配和释放,栈区往往存储