随笔分类 -  Golang学习笔记

摘要:协程调度 调度流程 Go程序运行和调度初始化 Go 程序运行会经过以下几个阶段: 从磁盘上读取可执行文件,加载到内存 操作系统执行 runtime 包中的程序入口 runtime 执行初始化,最后调用 main 函数 上图中的流程是根据源码文件 src/runtime/asm_amd64.s 和 s 阅读全文
posted @ 2024-01-10 21:12 昨晚没做梦 阅读(202) 评论(0) 推荐(0) 编辑
摘要:并发编程 GMP模型 GMP模型是 Go 的协程调度模型。 G是 goroutine 实现的核心结构,它包含了栈,指令指针,以及其他对调度 goroutine 很重要的信息,例如其阻塞的 channel。 P结构是 Processor,它的主要用途就是 M 执行 G 提供上下文,它维护了一个 gor 阅读全文
posted @ 2024-01-09 20:14 昨晚没做梦 阅读(224) 评论(0) 推荐(0) 编辑
摘要:泛型 泛型是什么?为什么要用泛型? 在开发中,会有一些复用性很强的功能,它被应用到很多地方,但为了适用会被不断重写,这很低效。例如一个intADD函数,他能进行 int 的加法,假如我们想进行 float 加法,又得重写一个floatADD函数,泛型就是为了解决这个问题而推出的功能。 想要接收多种类 阅读全文
posted @ 2024-01-08 22:33 昨晚没做梦 阅读(511) 评论(0) 推荐(0) 编辑
摘要:异常处理 异常 在Go语言中,异常被定义为实现了 error 接口的类型;error 接口只包含一个方法 Error() ,用于返回错误信息。 error 除了输出错误外,往往需要输出当时的业务相关信息(错误地址,错误码,错误信息等),举个简单例子: package main import ( "f 阅读全文
posted @ 2024-01-07 18:48 昨晚没做梦 阅读(92) 评论(0) 推荐(0) 编辑
摘要:面向对象 面向对象有三大特点:封装、继承和多态 方法 给内置类型定义方法是不被允许的 接收者 接口类型是无效的方法接收者 在之前的 学习笔记(二) 中有提到过方法,其格式如下: func (接收者) func_name(参数) 返回值 { //操作 } 学习了函数调用栈后,我们要知道 —— 接收者在 阅读全文
posted @ 2024-01-06 16:18 昨晚没做梦 阅读(161) 评论(0) 推荐(0) 编辑
摘要:函数进阶 函数调用栈 函数栈帧 分配给函数的栈空间被称为函数栈帧。其大致布局如下图所示: 调用者的栈基地址:保存调用函数的栈基地址,用于函数返回后获得调用函数的栈帧基地址 局部变量:函数内部本地变量 返回值:保存函数返回值临时变量 参数:函数调用时传入的参数,其值会被复制到函数栈帧中的参数变量中 返 阅读全文
posted @ 2024-01-04 21:18 昨晚没做梦 阅读(198) 评论(0) 推荐(0) 编辑
摘要:函数 函数定义 Go语言中定义函数使用 func 关键字,具体格式如下: func (接收者)函数名(参数)(返回值){ 函数体 } 其中: 接收者:只有在定义方法时,才需要设置接收者。(可选项) 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名。 阅读全文
posted @ 2024-01-01 22:21 昨晚没做梦 阅读(189) 评论(0) 推荐(0) 编辑
摘要:Golang常见控制结构 条件语句 if语句 * 不支持三目运算符 * 可省略条件表达式括号 * 代码块左括号 必须在条件表达式尾部 * else 或 else if 必须和 上一代码块右括号 同一行 if 条件表达式1 { ... } else if 条件表达式2 { ... } else { . 阅读全文
posted @ 2023-12-31 12:45 昨晚没做梦 阅读(185) 评论(0) 推荐(0) 编辑
摘要:Golang基本语法和常见数据结构 变量和常量 变量声明 标准声明 var name type 批量声明 var ( name1 type1 name2 type2 ... ) 声明时初始化 var name type = value 类型推导 var name = value 短变量声明 name 阅读全文
posted @ 2023-12-29 17:23 昨晚没做梦 阅读(1018) 评论(1) 推荐(1) 编辑
摘要:粗略了解Golang的核心特性 Go语言的特性 一、并发编程 不同于传统的多进程或多线程,golang的并发执行单元是一种称为goroutine的协程。其在语言级别提供关键字: go——用于启动协程。 chan——golang中用于并发的通道,用于协程的通信。 select——golang提供的多路 阅读全文
posted @ 2023-12-27 20:00 昨晚没做梦 阅读(804) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示